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

from:https://my.oschina.net/shyl/blog/692930python

相關文章
相關標籤/搜索