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

如下的區別有意義麼?python

class A(object):
    foo = 5   # some default value

Vsapp

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

若是你須要建立不少實例,這兩種風格在表現和空間要求上有什麼區別麼?當你閱讀代碼的時候,你是否會考慮這兩種風格的重要區別?code

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

>>> 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   
[]

原文連接:Python: Difference between class and instance attributesget

相關文章
相關標籤/搜索