以Mark Lutz著的《Python学习手册》为教程,每天花1个小时左右时间学习,争取两周完成。 --- 写在前面的话
2013-7-24 23:59 学习笔记
1,Python中的大多数OOP故事都可以简化为一个表达式:object.attribute 当类启用时,为了找出attribute首次出现的地方,Python会先搜索Object,然后是该对象之上的所有类,安装由下至上、由左至右的方式搜索。
2,调用类的函数时,总是隐含着类的实例。附加在实例上的属性只属于那些实例,但附加在类上的属性由所有子类和实例共享。
3,同def一样,class也是可执行语句,执行时会产生新的类对象,并将其复制给class头部的变量名。class语句内的顶层赋值语句(不在def中)会创建类的属性,为所有实例共享。在方法内对self属性赋值会产生每个实例自己的属性。例如:
class FirstClass: def setData(self, value): self.data = value def display(self): print self.data x = FirstClass() y = FirstClass() x.setData(3.14) y.setData('hello world') x.display() y.display()
输出结果为:
3.14 hello world
4,超类列在了类开头的括号中。类从超类中继承所有可读属性。例如:
class FirstClass: def setData(self, value): self.data = value def display(self): print self.data class SecondClass(FirstClass): def display(self): print 'secondClass: %s' %self.data x = SecondClass() x.setData('linlin') x.display()
输出结果为:
secondClass: linlin
5,类名称总是存在于模块中,类也是模块的属性。
6,Python通过在类中定义双下划线命名的方法(具体的方法名,Python已经规定好)来实现运算符重载。__init__方法则实现的是构造函数。例如:
class FirstClass: def setData(self, value): self.data = value def display(self): print self.data class SecondClass(FirstClass): def __init__(self, value): self.data = value def __add__(self, other): return SecondClass(self.data + other) def __mul__(self, other): return SecondClass(self.data * other) x = SecondClass('linlin') x.display() y = x + 'mo' y.display() z = x * 3 z.display()
输出结果为:
linlin linlinmo linlinlinlinlinlin