《Python核心编程》第13章面向对象编程学习笔记

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()函数知道该实例对象所有的引用都被清除掉才会执行。

你可能感兴趣的:(《Python核心编程》第13章面向对象编程学习笔记)