【思维导图】

面向对象编程中(OOP),封装、继承和多态是其重要的三大特性,之所以使用类(class),是因为她可以将数据及数据的操作组织到一起,从而可以创造一个可复用的组件(components)。Python支持面向对象编程(OOP)的所有标准特性:类的继承机制支持多个基类、派生的类能覆盖基类的方法、类的方法能调用基类中的同名方法。Python的内置类型可以用作基类,供用户扩展。派生类继承基类的方法和属性成员,既可以新增新的属性和方法,还可以覆盖/改写基类中相同的方法。
Python中一切皆对象,类是描述对象成员—方法和属性的数据结构原型,每个类声明都以class关键字开头,然后是缩进代码块,可包含类文档字符串、类变量和类方法。对象是类的实例,类是创建对象的模板,一个类模板可以创建多个实例对象。对象的成员包括实例成员和类成员,类成员具有全局范围,而实例成员具有局部范围。实例变量将数据安全地封装在类结构中,并且是在创建类实例时初始化,且通过点表示法引用并被寻址。实例第一次创建时使用__init__( )构造函数进行初始化,不同的实例之间通过self前缀进行区分。事实上,对象的成员变量是动态的,可以在创建类时定义,也可以在实例化后动态增加。
类的成员名称以双下划线字符在名义上表示隐私,但Python并没有严格意义上的私有成员。虽然Python已经提供了自动垃圾回收机制,一般不需要我们自己管理内存,但是del关键字可以删除对象并调用类的析构函数。
类的属性相当于类的全局变量,为类的所有实例对象所共享,而实例对象的属性属于自己私有,只能供对象自己访问。如果在类外修改类属性,必须要通过类名去引用然后修改,如果通过实例对象引用修改的话,会为实例对象创建一个新的对象属性。一般来说,对象的方法主要是供实例对象使用,类的方法供类使用,而类的静态方法供类和对象使用,类的静态方法方便将外部函数集成到类中来。
关于类和实例对象的属性和方法,我们归纳总结如下表所示:
