python class和class(object)用法區別-(轉)
阿新 • • 發佈:2019-02-13
# -*- 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方法。