我目前正在學習Python 2.6.5,並且發現了舊式類和新式樣類。Python - 我需要了解舊式類嗎?
據我所知,這些類仍然存在只是爲了向後兼容,他們在Python 3
被刪除所以現在的問題是這樣的:作爲一個初來乍到的語言,我需要了解經典課程?
P.S.我正在學習Python 2,因爲Python 3在框架中還沒有完全支持,我也想學習一些框架。當框架迎頭趕上時,計劃將轉向Python 3,但在那之前,我需要擔心舊的類風格嗎?
我目前正在學習Python 2.6.5,並且發現了舊式類和新式樣類。Python - 我需要了解舊式類嗎?
據我所知,這些類仍然存在只是爲了向後兼容,他們在Python 3
被刪除所以現在的問題是這樣的:作爲一個初來乍到的語言,我需要了解經典課程?
P.S.我正在學習Python 2,因爲Python 3在框架中還沒有完全支持,我也想學習一些框架。當框架迎頭趕上時,計劃將轉向Python 3,但在那之前,我需要擔心舊的類風格嗎?
不,不要打擾。從object
(或繼承自object
的類)繼承所有的課程,您就可以順利完成任務。然後,當你轉換到Python 3時,你可以忘記這一點的語法。
在這一點上使用甚至學習舊式課程沒有任何優勢。
因此,只要確保所有類聲明的是這樣的:
class foo(object):
...
(或比object
這確實繼承object
其他的東西繼承),然後假裝這是它的方式一直以來!
儘管我同意Daniel DiPaolo的說法,您應該永遠不需要在代碼中使用使用舊式類,但有時您需要稍微瞭解它們。
例如,對於舊式類,您不能使用super
來調用父級方法 - 並且在嘗試子類時可能會咬你,例如urllib2.Request
類。如果你這樣做沒有意識到你會得到神祕的錯誤super() argument 1 must be type, not classobj
,這可能需要很長時間才能調試。
(正如你可能會說,我去過那裏......)
+1:http://www.artima.com/weblogs/viewpost.jsp?thread=237121 – 2011-02-18 22:43:19