[英]Best practice for Python 3 class creation
在我的研究中,我發現在 Python 3 中這三種類型的類定義是同義詞:
class MyClass:
pass
class MyClass():
pass
class MyClass(object):
pass
但是,我無法找出推薦哪種方式。 我應該使用哪一個作為最佳實踐?
在 Python 2 中,有 2種類型的類。 要使用新樣式,您必須從object
顯式繼承。 如果不是,則使用舊式實現。
在 Python 3 中,所有類都隱式地擴展object
,無論您自己是否這么說。
無論如何,您可能希望使用新式類,但如果您的代碼應該與 python 2 和 3 一起使用,則必須顯式繼承自對象:
class Foo(object):
pass
顯式優於隱式。
我認為這意味着我們應該避免在代碼中可能出現的混淆,就像我們在一般語言中應該避免的那樣,記住代碼就是交流。
如果您只使用 python 3,並且您的代碼/項目明確聲明,則不會出現混淆,所有沒有顯式繼承的類都會自動從 object 繼承。 如果將來由於某種晦澀的原因改變了基類(讓我們想象一下從object到Object ),相同的代碼將起作用。 Python之禪也說
簡單勝於復雜。
(當然,在這個例子中復雜是相當誇張的,但仍然......)
所以如果你的代碼只支持 python3,你應該使用最簡單的形式:
class Foo:
pass
僅包含()
的形式非常無用,因為它沒有提供任何有價值的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.