2013-10-29 73 views
3

爲什麼Python將這些類視爲不同的數據類型?解釋Python類

>>> class A: 
... pass 
... 
>>> class B(object): 
...  pass 
... 
>>> a = A() 
>>> b = B() 
>>> type(A) 
<type 'classobj'> 
>>> type(B) 
<type 'type'> 
>>> type(a) 
<type 'instance'> 
>>> type(b) 
<class '__main__.B'> 

我很新。所以我不明白爲什麼它將所有這些視爲不同的數據類型。他們都是類,所以看起來好像他們應該是一樣的。

+2

Dup:[Python中的舊風格和新風格類](http://stackoverflow.com/questions/54867/old-style-and-new-style-classes-in-python) –

回答

6

你使用Python 2

的Python 2允許不從object,這是在2.2版本中增加繼承的類。他們在幾個方面表現與「新式班」有所不同,而且你找到了一對。

沒有理由對其他比保留向後兼容的不同的行爲,這是保證老式類編寫的代碼繼續在Python的新版本的工作2.

的Python 3是不落後兼容並且沒有舊式課程。如果你在Python 3中編寫了相同的代碼,那麼A將從object繼承,即使你沒有明確說出。