2017-02-15 97 views
6

我注意到所有3 - >class fooclass foo()class foo(object)可以使用,但我很困惑這三個之間有什麼區別,如果有什麼? (我的意思是在性能爲主,python3類foo,類foo()和類foo(object)之間的區別?

+0

這三者在這裏都是一樣的。 –

+0

在Python 2中,前兩種形式做不好的事情。在Python 3中,它們是相同的(除非你對'object'做了一些愚蠢的事情)。 – user2357112

回答

9

讓我們打破他們:

  1. class foo

    • 的Python 3:它通常是要走的路。默認情況下,Python會爲您添加object作爲基類。
    • Python 2:它會創建一箇舊的風格classobj,這將導致您各種頭痛。
  2. class foo()

    • 的Python 3的Python 2:類似class foo兩個Python版本,修剪它,它看起來醜陋,沒有什麼區別。
  3. class foo(object)
    • 的Python 3的Python 2:在這兩個蟒蛇,導致一種新的風格類,它具有所有最懂的東西。人們通常在編寫可能在Python 2中使用的代碼時也會使用這種形式,明確從對象繼承將導致該類在Python 2中成爲新樣式,並且在3中除了某些額外的輸入外沒有任何區別。
相關問題