# -*- 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/692930python