Python 新式类和旧式类

Python [[OOP]] Python 新式类和旧式类 新式类从 python2.2 开始引入。 定义区别 # python2.x class A: # 旧式类 pass class B(object): # 新式类 pass class C(A): # 旧式类,因为 A 是旧式类 pass class D(B): # 新式类 pass class E(A, B): # 新式类 pass class F(B, A): # 新式类 # python3.x class A: # python3.x 全是新式类 pass 使用区别 __class__ 执行结果和type不一致 继承搜索的顺序 __slots__ __getattribute__ 对新式类的实例执行 a.__class__ 与 type(a) 的结果是一致的,对于旧式类来说就不一样了。 >>> class A: ... pass >>> a = A() >>> a <__main__.A instance at 0x10654bc68> >>> a.__class__ <class __main__.A at 0x1064cec18> >>> type(a) <type 'instance'> >>> class B(object): ... pass ... >>> b = B() >>> b.__class__ <class '__main__.B'> >>> type(b) <class '__main__.B'> 继承搜索的顺序 class A(): def __init__(self): pass def save(self): print "This is from A" class B(A): def __init__(self): pass class C(A): def __init__(self): pass def save(self): print "This is from C" class D(B,C): def __init__(self): pass fun = D() fun.save() 经典类的答案: This is from A 新式类的答案: This is from C ...