我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python类的基本写法与注释风格介绍

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python类的基本写法与注释风格介绍

Python类基本写法与注释风格

python是一种面向对象的语言,利用类的抽象可以大大提高代码的复用和结构,减少重复造轮子的过程,也让代码变得更加清晰易懂、便于维护。

https://runnable.com/docker/python/

1.python中的类 Class

python中的类提供了一系列数据和方法的组合,类是python的一种对象,可以由它构建出新的实例。实例包含了类所具有的属性和类中声明的方法。首先来看一个基本类的写法:

class Dog(object):
	"""This is a dog class as example"""
	def __init__(self,name):
		"""This is initial funciton"""
		self.name = name
	
	def voice(self):
		"""Dog will speak as wangwang """
		print('WangWangWang')

这是一个非常简单的类,但其中包含了类很重要的几个部分,包括类的声明、初始化的构造函数、属性、成员方法的定义等。

其中有几个地方需要注意:object是python中所有类的基类,在类的初始化时显式继承 

self是类里的实例,为实例本身,在初始化后具有一系列的属性和方法,类方法的第一个参数按照约定需要使用self开头。

一个完整的类的声明还会包括基本属性、私有属性和保护变量等内容:

class Dog(object):
	"""This is a dog class as example"""
	
	animal_kind = 'dog'    #基本属性
	animal_legs = 4        #基本属性也建议写到初始化构造函数中去
	
	def __init__(self,name,age,params...):    #利用__init__(self,params)进行初始化
		"""This is initial funciton"""
		self.name = name
		self.age = age
		#还可以定义各种其他的属性,作为实例初始化时候将传进来的参数进行赋值
		self.__gender = 'male'        #两个下划线开头是私有内部属性,只能在类内访问
	
	def __privateGender(self):
		"""This is pravate method"""
		print('This dog gender is %s',self.__gender)	
	def voice(self):
		"""Dog will speak as wangwang """
		print('WangWangWang')
		print(self.__privateGender(self))
	def run(self):
		"""runing with legs"""
		print("This dog has %d legs to run"%self.animal_legs)
	#定义一大堆各种各样的方法

class是可以进行继承以及方法重写的,可以基于一个类继承,也可以基于多个类进行多重继承。

class Husky(Dog):
	"""Husky inherent the Dog attris and method"""
	def __init__(self,name,age,color,params):
		Dog.__init__(self, name, age)   #利用Dog这个父类的初始化
		self.color = color              #子类中特定属性的初始化
	def jump(self):
		"""Husky special jump function"""
		print('This dog could jump jump')
	
	def voice(self):
		"""重写覆盖父类的函数,实现自己的特殊的方法"
		print('AoAoAoWu~~~~~~')

2.语言风格规范

为了更好的便于阅读和复用代码,还需要使得代码满足一定的语言风格,这里选用了google的风格规范来对类进行声明,下面是一个例子

# ref from:https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/
class MyDog(object):
    """Summary of class here.        #1.首先一句话简短的总结这个类的功能和作,文档字符串需要用三引号包括
	
	# 对齐,空一行
	If the class has public attributes, they may be documented here
    in an ``Attributes`` section and follow the same formatting as a
    function's ``Args`` section. Alternatively, attributes may be documented
    inline with the attribute's declaration (see __init__ method below).
    Properties created with the ``@property`` decorator should be documented
    in the property's getter method.
   
    Longer class information....     #随后详细的说明类的细节
    Longer class information....     #类内部第一行的开始的文字都可以被__doc__
	
	# 空一行,开始写这个类的各个属性,包括数据类型和作用
    Attributes:
        likes_spam: A boolean indicating if we like SPAM or not.   #属性的声明,包括数据类型和作用,xxx类型的数据for/used to/ofxxx
        eggs: An integer count of the eggs we have laid.
    """
    def __init__(self, likes_spam=False):
        """Inits SampleClass with blah."""
        # 下面是详细的例子
		"""Example of docstring on the __init__ method.
		
		# 对于初始化方法的说明
        The __init__ method may be documented in either the class level
        docstring, or as a docstring on the __init__ method itself.
        Either form is acceptable, but the two should not be mixed. Choose one
        convention to document the __init__ method and be consistent with it.
		
		# 对于初始化方法的一些记录
        Note:
            Do not include the `self` parameter in the ``Args`` section.
		
		# 初始化的参数输入,对于方法来说参数名(数据类型):描述的格式来写
        Args:
            param1 (str): Description of `param1`.
            param2 (:obj:`int`, optional): Description of `param2`. Multiple
                lines are supported.
            param3 (:obj:`list` of :obj:`str`): Description of `param3`.
        """
        self.likes_spam = likes_spam
        self.eggs = 0
	    # 输入参数的初始化
        self.attr1 = param1
        self.attr2 = param2
        self.attr3 = param3  #: Doc comment *inline* with attribute
        #: list of str: Doc comment *before* attribute, with type specified
        self.attr4 = ['attr4']
        self.attr5 = None
        """str: Docstring *after* attribute, with type specified."""
    def public_method(self):
        """Performs operation blah."""
        """Summary line.   #第一行简写函数描述
	    
	    # 空一行,对齐详细描述
	    Extended description of function.
		
		# 空一行对齐,写args 的各个内容,变量名(类型):描述
	    Args:
	        arg1 (int): Description of arg1
	        arg2 (str): Description of arg2
		
		# 空一行对齐,不同情况下的if else 返回值(类型):描述
	    Returns:
	        int/float/bool dtype: Description of return value
	
	    """

Example

最后完整的按照风格来写一个类的示例:

class Dog(object):
	"""
	This is a class for Dog 
	Dog class is the parents class of all dog, this class contain 
	general attributes of dog and some common function of dogs, such as
	num legs, the voice fucntion, the runing functions.
	
	Attributes:
		name: 	A string of dog's name
		kind: 	A string of dog's family
		age:  	A integer of dog years
		gender: A boolean gender of dog, male=1 of famle=0
		legs    A integer if dog's legs
		weight: A float of dogs weight
		size:   A string of dogs, one of big, middle, smal
	"""
	
	def __init__(self,args,gender,size):
		"""initialize dog class, all attributes pass in with args, which is a dict or indepent params
		Input contain dict and str params, also there is private attribute
		
		Args:
			args.name(str): dog name
			args.kind(str): dog family
			args.age(int) : dog age
			gender(bool)  : dog gender, male=1,famale=0
		args.weight(float): dog weight
			size(str)     : dog size
		"""
		self.name = args.name
		self.kind = args.kind
		self.age = args.age
		self.weight = args.weight
		
		# __legs(int) : dog legs,privite attribute, not the inputs params,写在前面用#做注释,不属于输入的参数的初始化
		self.__legs = 4  
		"""写在后面用三引号__legs(int)   : dog legs,privite attribute"""
		
		self.size = size
		self.gender = gender
		
	def voice(self,size):
		"""This is dog speak fucntion
	
		Different dog with different voice 
		which related to the size,age and kind
		Args:
			size(str): dog size
			age(int) : dog age
			kind(srt): dog kind
			
		Returns:
		    None, just print the voice
	    """
		if size=='big':
			print('Big WangWang')
		elif size =='middle':
			print('M wang')		
		elif size=='small':
			print('Miao')
		
		# 附注:return 可从任意深度跳出函数,None

Python类的简单写法

class MyClass:
  name = ''
  age = 0
  __weight = 0 #私有变量
  
  def __init__(self, n, a, w): #self必须作为函数的第一个参数
    self.name = n
    self.age = a
    self.__weight = w
  def speak(self):
    print('%s 说:我 %s 岁'%(self.name, self.age))
x = MyClass('yao', 10, 30)
x.speak()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python类的基本写法与注释风格介绍

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python类的基本写法与注释风格是什么

本文小编为大家详细介绍“Python类的基本写法与注释风格是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python类的基本写法与注释风格是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Python类
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录