1,类Class是抽象的;对象Object是具体的;
2,类的属性:方法Methods(类包含的函数)和类变量Class Variables;
3,类用Class创建,method和Variable在缩进块中定义;
4,对象内定义的变量称为实例变量Instant Variables,对象可以使用类内的函数(Methods);
5,对象和类内的变量统称为域Field;
6,self
类的Method与一般函数的唯一区别是,Method的参数列表中必须首先一个参数self。
self的作用是:假设一个类MyClass以及对应的对象MyObject,当该对象调用某Method时,
MyObject.Method(arg1, arg2),对Python来说即相当于 MyClass.Method(MyObject, arg1, arg2)。
但是,假如某个Method只属于类时,不需要再声明self;此时,应该该method上一行标明 @classmethod
7,创建类的对象
类名之后加一对圆括号。例如:
Class Person:
pass
p = Person()
8,Method __init__
__init__的作用是,在创建对象时,使用__init__对其初始化。
初始化什么、初始化成什么样子,完全由__init__的内容决定。举个例子。
Class Person:
def __init__ (self, name1) :
self.name2 = name1
# self可理解成对象的”替身”;
# 初始化的内容是,定义一个实例变量name2,在初始化时把传递给参数name1的值赋给它
p = Person(‘Dickface’)
此后,p.name2即为Dickface
9,类变量
一般来说,类变量是共享的而且是互斥的。即,所有的对象均可调用类变量,而且某一时刻仅允许最多一个对象引用它;类变量的变化会反映到全局。
如果希望类变量私有,可以在变量名前加前缀 __,例如 __privatevar
10,继承
(1) 继承规则:父类作为元组跟在子类名称后面,带冒号。
例如: class ChildClass (ParentClass) :
(2) 初始化
在子类中,用父类的__init__初始化父类部分,用self再初始化子类部分
有一点需要注意,父类的初始化是在子类初始化要退出之前才开始的。
看下面例子:
实验证明,打印的消息会出现在父类的消息之前。
(3) method的使用
子类的对象使用method,会从下到上层层搜索。即,现在子类中寻找该method,如果没有,再到父类中找。