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/692930


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。