如下的區別有意義麼?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