今天从25章开始(P652)学习 Python 的 OOP
用代码看起来更直观:
class Class_A:
def __init__(self,value): # 构造函数
self.data = value
def __add__(self,other): # 运算符重载
return Class_A(self.data +other)
def __str__(self): # 运算符重载
return '[Class_A : %s]'% self.data
def do_something(self,percent): # 方法
self.data *= (1.00 + percent)
class Class_B(Class_A): # 继承(多基类继承!)
def __init__(self,value):
Class_A.__init__(self,value) # 显式实现
def do_something(self,percent): # 覆盖基类方法
self.data *= (1.00 - percent)
class Class_C(Class_B):
def __init__(self,value):
self.data = value
def __str__(self): # 覆盖基类运算符重载
return '[Class_C] : %s]' % self.data
C_A = Class_A(100)
C_B = Class_B(200)
C_C = Class_C(300)
C_A.do_something(0.10) # C_A.data = 100 * 1.10 = 110
print(C_A)
C_A_Add = C_A + 10.00 # 运算符重载,返回新的 Class_A , C_A.data = 110 +10 = 120
print(C_A_Add)
C_B.do_something(0.20) # C_B.data = 200 * 0.80 = 160
print(C_B)
C_C.do_something(0.30) # C_C.data = 300 * 0.70 = 210
print(C_C)
>>>
[Class_A : 110.00000000000001]
[Class_A : 120.00000000000001]
[Class_A : 160.0]
[Class_C] : 210.0]
>>>
一、Python 中的类可以多基类继承
二、由于Python是动态语言,所以类的属性、方法可以在运行时动态装配
三、不用解释,Python 天生支持多态
四、Python 不需要 Interface ,每个对象都是自描述的,不需要画蛇添足的再弄出个 Interface 出来
五、Python 同样不需要抽象类......
六、进行企业开发可能用到的东西
1、GUI: PyQt、wxPython
2、Web:Django、TurboGears、Pylons、Web2Py、Zope
3、数据库:
4、ORM: SQLObject、SQLAlchemyOODB:ZODB
ERDB:MySQL、PostgreSQL、SQLite
小结:
除了很多概念,C#的经验在 Python 中没有多少帮助,反而十几年前用VFP的很多东西回想起来了......
下午从第28章开始