2011-02-18 53 views
5

我目前正在學習Python 2.6.5,並且發現了舊式類和新式樣類。Python - 我需要了解舊式類嗎?

據我所知,這些類仍然存在只是爲了向後兼容,他們在Python 3

被刪除所以現在的問題是這樣的:作爲一個初來乍到的語言,我需要了解經典課程?

P.S.我正在學習Python 2,因爲Python 3在框架中還沒有完全支持,我也想學習一些框架。當框架迎頭趕上時,計劃將轉向Python 3,但在那之前,我需要擔心舊的類風格嗎?

回答

13

不,不要打擾。從object(或繼承自object的類)繼承所有的課程,您就可以順利完成任務。然後,當你轉換到Python 3時,你可以忘記這一點的語法。

在這一點上使用甚至學習舊式課程沒有任何優勢。

因此,只要確保所有類聲明的是這樣的:

class foo(object): 
    ... 

(或比object確實繼承object其他的東西繼承),然後假裝這是它的方式一直以來!

4

儘管我同意Daniel DiPaolo的說法,您應該永遠不需要在代碼中使用使用舊式類,但有時您需要稍微瞭解它們。

例如,對於舊式類,您不能使用super來調用父級方法 - 並且在嘗試子類時可能會咬你,例如urllib2.Request類。如果你這樣做沒有意識到你會得到神祕的錯誤super() argument 1 must be type, not classobj,這可能需要很長時間才能調試。

(正如你可能會說,我去過那裏......)

+0

+1:http://www.artima.com/weblogs/viewpost.jsp?thread=237121 – 2011-02-18 22:43:19