引言:
类是对象的定义,而实例是“真正的实物”。
class NewObjectType(bases): 'define NewObjectType class' class_sui
最简单的情况把类用作名称空间。可以把数据保存在变量中,对他们按名称空间进行分组。
面向对象编程:
增强了结构化编程,实现了数据与动作的融合‘
类属性:
属性也是一个对象,拥有自己的属性,可以访问,这形成了一个属性链。
没有实例,方法不能被调用。
查看类有那些属性:dir()、属性__dict__
特殊的类属性:__name__, __doc__,__bases__,__dict__,__module__,__class__.
实例属性:
通过调用类对象来创建实例 mc = Myclass().
如果定义了构造器,它不应该返回任何对象。
dir()也可以打印实例属性。
特殊的实力属性__class__,__dict__.
给一个与类属性同名的实例属性赋值,会遮蔽类属性。(在类属性可变的情况下,一切就不同了。)
类属性的修改会影响到所有的实例。
绑定与方法调用:
self变量用于在类实例方法中引用方法所绑定的实例。
静态方法和类方法;
staticmethod()和classmethod()内建函数。
使用函数修饰符。@staticmethod、@classmethod。
子类和派生:
OOP最强大的一个功能是使用一个已经定义好了的类,扩展它或对它进行修改。
super()内建方法,不但能找到基类方法,还能传进self。
类、实例和其他对象的内建函数:
isoubclass(sub, sup).布尔函数判断一个类是另一个类的子类或子孙类。第二个参数可以是父类组成的元组。
isinstance(obj1, obj2)布尔函数判断一个对象是否是另一个给定类的实例或者子类的一个实例。
attr系列函数可以在各种对象下工作,不限于类和实例。attr(obj, 'attr')
super()找出相应的父类。
vars()内建函数与dir()函数相似。