第13章 面向对象编程(1)

13.1 引言
1.类与实例
类与实例相互关联着:类是对象的定义,而实例是“真正的实物”,它存放了类中所定义的对象的具体信息。
新式类和经典类声明的最大不同在于,所有新式类必须继承至少一个父类,参数bases可以是一个(单继承)或多个(多重继承)用于继承的父类。
object是所有类之母,如果你的类没有继承任何其他父类,object将作为默认的父类。它位于所有类继承结构的最上层。如果你没有直接或间接的子类化一个对象,那么你就定义了一个经典类。
创建一个实例的过程称作实例化。

你有一个本身没有任何属性的类,使用它仅可以对数据提供一个名称空间,这样的类仅作为容器对象来共享名称空间。


2.方法

类的功能有一个更通俗的名字叫方法。在Python中,方法定义在类定义中,但只能被实例所调用。也就是说,调用一个方法的最终途径必须是这样的:(1)定义类(和方法);(2)创建一个实例;(3)用这个实例调用方法。

self参数在所有的方法声明中都存在。这个参数代表实例对象本身,当你用实例调用方法时,由解释器悄悄地传递给方法的,所以你不需要自己传递self进来,因为它是自动传入的。

在其他语言中,self成为"this"。

一般的方法会需要这个实例(self),而静态方法或类方法不会,其中类方法需要类而不是实例。

__init__()类似于类构造器,构造器仅是一个特殊的方法,它在创建一个新的对象时被调用。在Python中,__init__()实际上不是一个构造器。你没有调用"new"来创建一个新对象。(Python根本就没有"new"关键字)。取而代之,Python创建实例后,在实例化过程中,调用__init__()方法,当一个类被实例化时,就可以定义额外的行为。

4.创建实例(实例化)

实例化调用,它会自动调用__init__()。self把实例对象自动传入__init__()。

7. 创建子类

靠继承来进行子类化是创建和定制新类类型的一种方式,新的类将保持已存在类所有的特性,而不会改动原来类的定义。

每个类最好自己定义它自己的构造器,不然,基类的构造器会被调用。然而,如果子类重写基类的构造器,基类的构造器就不会被自动调用了——这样,基类的构造器就必须显式写出才会被执行。

这里我们要显式传递self实例对象给基类构造器,因为我们不是在该实例中而是在一个子类实例中调用那个方法。因为我们不是通过实例来调用它,这种未绑定的方法调用需要传递一个适当的实例(self)给方法。

类名通常由大写字母打头。数据值应该使用名词作为名字,方法使用谓词(动词加对象)。数据项是操作的对象、方法应当表明程序员想要在对象进行什么操作。

你可能感兴趣的:(面向对象)