# -*- coding: utf-8 -*- # 經典類或者舊試類 class A: pass a = A() # 新式類 class B(object): pass b = B() # python2不支持 # print(A.__class__) print(a.__class__) print(type(A)) print(type(a)) # python2 # __main__.A # <type 'classobj'> # <type 'instance'> # python3 # <class 'type'> # <class '__main__.A'> # <class 'type'> # <class '__main__.A'> print(B.__class__) print(b.__class__) print(type(B)) print(type(b)) # python2 # <type 'type'> # <class '__main__.B'> # <type 'type'> # <class '__main__.B'> # python3 # <class 'type'> # <class '__main__.B'> # <class 'type'> # <class '__main__.B'> # 舊式類的實現不夠好,類是類,實例是實例,類的類型是classobj,實例的類型是instance,兩者的聯系只在於__class__, # 這和內置對象是不同的,int對象的類型就是int,同時int()返回的也是int類型的對象,內置對象和自定義對象不同就對代碼統一實現帶來很大困難。 # # 新式類 # # 1. 所有類的類型都是type # 2. 所有類調用的結果都是構造,返回這個類的實例 # 3. 所有類都是object的子類 # 4. 新式類不僅可以用舊類調用父類的方法,也可以用super方法。
from:https://my.oschina.net/shyl/blog/692930