1. 程式人生 > >python class和class(object)用法區別-(轉)

python class和class(object)用法區別-(轉)

# -*- 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方法。