[譯]Python中的類屬性與實例屬性的區別

Python中的類屬性與實例屬性的區別:
以下的區別有意義么?

class A(object):

foo = 5   # some default value

Vs

class B(object): def init(self, foo=5):

         self.foo = foo

如果你需要創建很多實例,這兩種風格在表現和空間要求上有什么區別么?當你閱讀代碼的時候,你是否會考慮這兩種風格的重要區別?

除了表現上的考慮,這邊有一個重要的語義上的不同。在類屬性的那個例子中,只有一個對象被引用。用實例屬性設置的實例中,實例有可能被多個對象引用。比如說:

>>> class A: foo =[ ]
>>> a, b = A(), A()
>>> a.foo.append(5)
>>> b.foo
[5]
>>> class A:
...  def __init__(self): self.foo = [ ]
>>> a, b = A(), A()
>>> a.foo.append(5)
>>> b.foo   
[]
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,973評論 19 139
  • 1.1面向對象 面向對象(object-oriented ;簡稱: OO)至今還沒有統一的概念 我這里把它定義為:...
    TENG書閱讀 584評論 0 0
  • 在這個快節奏的社會,在這個壓力山大的環境,我們被迫的去追,被迫的去趕,而忘記了自己內心深處最想要的是什么。所以我們...
    云學科技閱讀 585評論 0 0
  • 第七篇 如何使你變得更加成熟 55.擺脫生活中的不幸 人生的路,總有幾道彎,幾道溝,幾道坎;生活的味,總有幾分苦,...
    禪園聽雪閱讀 641評論 6 15
  • 你看,南方城市的雨來的正好,你慢慢聽,聽雨,也聽故事。 1 W姑娘跟男朋友其實都是我的高中同學,十七八歲最美好的年...
    她說她的話閱讀 554評論 1 6