Python class:定义类 图片看不了?点击切换HTTP 返回上层
前面章节中已经提到,类仅仅充当图纸的作用,本身并不能直接拿来用,而只有根据图纸造出的实际物品(对象)才能直接使用。因此,Python 中使用类的顺序是:先创建(定义)类,然后再创建类的实例对象,通过实例对象实现特定的功能。本节来先学习如何创建一个类。
Python 中,创建一个类使用 class 关键字实现,其基本语法格式如下:
类名只要是一个合法的标识符即可,但这仅仅满足的是 Python 的语法要求:如果从程序的可读性方面来看,Python 的类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符,例如类名为“TheFirstDemo”。
从上面定义来看,Python 的类定义有点像函数定义,都是以冒号(:)作为类体的开始,以统一缩进的部分作为类体的。区别只是函数定义使用 def 关键字,而类定义则使用 class 关键字。
Python 的类定义由类头(指 class 关键字和类名部分)和统一缩进的类体构成,在类体中最主要的两个成员就是属性和方法。如果不为类定义任何属性和方法,那么这个类就相当于一个空类,如果空类不需要其他可执行语句,则可使用 pass 语句作为占位符。例如,如下类定义是允许的:
下面程序将定义一个 Person 类:
可以看到,上面代码创建了一个名为 Person 的类,该类中创建了一个名为 hair 的类属性,需要注意的是,根据定义属性位置的不同,在各个类方法之外定义的称为类属性或类变量(如 hair 属性),而在类方法中定义的属性称为实例属性(或实例变量),它们的区别和用法可阅读《Python类变量和实例变量》一节。
不仅如此,Person 类中还创建了一个 say() 类方法,细心的读者可能已经看到,该方法包含两个参数,分别是 self 和 content。可以肯定的是,content 参数就只是一个普通参数,没有特殊含义,但 self 比较特殊,并不是普通的参数,它的作用和用法会在后续章节中详细介绍。
Python 中,创建一个类使用 class 关键字实现,其基本语法格式如下:
class 类名:
零个到多个类属性...
零个到多个类方法...
类名只要是一个合法的标识符即可,但这仅仅满足的是 Python 的语法要求:如果从程序的可读性方面来看,Python 的类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符,例如类名为“TheFirstDemo”。
从上面定义来看,Python 的类定义有点像函数定义,都是以冒号(:)作为类体的开始,以统一缩进的部分作为类体的。区别只是函数定义使用 def 关键字,而类定义则使用 class 关键字。
Python 的类定义由类头(指 class 关键字和类名部分)和统一缩进的类体构成,在类体中最主要的两个成员就是属性和方法。如果不为类定义任何属性和方法,那么这个类就相当于一个空类,如果空类不需要其他可执行语句,则可使用 pass 语句作为占位符。例如,如下类定义是允许的:
class Empty: pass通常来说,空类没有太大的实际意义。
下面程序将定义一个 Person 类:
class Person : '''这是一个学习Python定义的一个Person类''' # 下面定义了一个类属性 hair = 'black' # 下面定义了一个say方法 def say(self, content): print(content)与函数类似的是,Python 也允许为类定义说明文档,该文档同样被放在类声明之后、类体之前,如上面程序中第二行的字符串所示。
可以看到,上面代码创建了一个名为 Person 的类,该类中创建了一个名为 hair 的类属性,需要注意的是,根据定义属性位置的不同,在各个类方法之外定义的称为类属性或类变量(如 hair 属性),而在类方法中定义的属性称为实例属性(或实例变量),它们的区别和用法可阅读《Python类变量和实例变量》一节。
不仅如此,Person 类中还创建了一个 say() 类方法,细心的读者可能已经看到,该方法包含两个参数,分别是 self 和 content。可以肯定的是,content 参数就只是一个普通参数,没有特殊含义,但 self 比较特殊,并不是普通的参数,它的作用和用法会在后续章节中详细介绍。
注意,更确切地说,say() 是一个实例方法,除此之外,Python 类中还可以定义类方法和静态方法,这 3 种类方法的区别和具体用法,可阅读《Python实例方法、静态方法和类方法》。