簡體   English   中英

Python中的“ A類:”和“ A(object):類”有什么區別?

[英]What's the difference between 'class A:' and 'class A(object):' in Python?

之間有什么區別

class A:
    pass

class B(object):
    pass

由於某種原因,在方法中我不能使用super(A, self)但是super(B, self)效果很好。 我猜在Py3k中沒有這樣的特點:)

在2.x中,后者創建一個新式類 在3.x中,由於已刪除舊式類,因此兩者具有相同的效果。

第一個是老式類。 第二個是新型類。 請參閱http://docs.python.org/tutorial/classes.html#multiple-inheritance ,以獲取有關區別的詳細討論。 super()僅適用於新型類。 http://docs.python.org/library/functions.html#super

B類是一種新樣式的類http://www.python.org/doc/newstyle/

如前所述,第二種情況創建一個新樣式的類,而第一種情況創建一個舊的樣式的類(不建議使用!)。

創建新樣式類以消除舊樣式的限制:舊樣式類不能從內置類型繼承。 使用新型類,您可以從內置類型繼承; 實際上,所有內置類型都源自“對象”:

>>> list.__mro__
(<type 'list'>, <type 'object'>)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM