13.1类
类声明与函数声明很相似,头一行用一个相应的关键字,接下来是一个作为它的定义的代码体,如下所示:
def functionName(args):
'function documentation string' #函数文档字符串
function_suite #函数体
class ClassName(object):
'class documentation string' #类文档字符串
class_suite #类体
二者都允许在他们的声明中创建函数,闭包或者内部函数,还有在类中定义的方法。最大的不同在于你运行函数,而类会创建一个对象。类就像一个Python容器类型。
13.1.1创建类
Python类使用class关键字来创建,简单的类的声明可以是关键字后紧跟类名:
class ClassName(bases):
'class documentation string' #'类文档字符串'
class_suite #类体
13.2类属性
属性就是属于另一个对象的数据或者函数元素,可以通过据点属性标识法来访问。
13.2.1类的数据属性
数据属性仅仅是所定义的类的变量,实际上是静态变量,或者是静态成员(即可以修改)。
>>>class C(object):
... foo = 100
>>>print C.foo
100
>>>C.foo = C.foo + 1
>>>print C.foo
101
13.2.2Methods
(1)方法
方法,比如以下的类定义,类MyClass中的myNoActionMethod,仅仅是一个作为类定义一部分定义的函数,实际上这个函数是一个类属性。这表示myNoActionMethod仅应用在MyClass类型的对象(实例)上。
>>>class MyClass(object):
def myNoActionMethod(self):
pass
>>>mc = MyClass()
>>>mc.myNoActionMethod()
myNoActionMethod是一个方法,表示它属于一个类,如果没有新建实例,是不能够调用的。当然,想要直接调用myNoActionMethod是不可能的。
(2)绑定
Python严格要求,没有实例,方法是不能被调用的,在此,方法必须绑定才能直接被调用。非绑定的方法可能可以被调用,但实例对象一定要明确给出,才能确保调用成功。然而,不管是否绑定,方法都是它所在的类的固有属性,即使它们几乎总是通过实例来调用的。
13.3实例
13.3.1初始化:通过调用类对象来创建实例
>>>class MyClass(object): #定义类
... pass
>>mc = MyClass() #初始化类,mc为实例
13.3.2__init__()“构造器”方法
当类被调用,实例化的第一步是创建实例对象。一旦对象创建了,Python检查是否实现了init()方法。默认情况下,如果没有定义特殊方法init(),对实例不会施加任何特别的操作。
13.3.3__del__()“解释器”方法
del()函数知道该实例对象所有的引用都被清除掉才会执行。