譯 Python中的類屬性與例項屬性的區別

2021-09-18 04:12:12 字數 569 閱讀 7932

以下的區別有意義麼?

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()

>>> b.foo

[5]>>> class a:

...  def __init__(self): self.foo = [ ]

>>> a, b = a(), a()

>>> b.foo   

Python 類屬性與例項屬性

python在 init self 方法中定義的屬性為例項屬性,並且python的例項可以動態地增加例項屬性 直接跟在類名後邊定義的屬性都預設是類屬性 類似於c 的static變數 要明白雷和例項都是命名空間。類是類屬性的命名空間,例項則是例項屬性的命名空間。例項屬性能夠在名稱訪問 搜尋 中覆蓋類屬...

Python例項屬性與類屬性

class foo object version 1.0 f foo print foo.version 1.0 print f.version 1.0 foo.version 0.1 print foo.version 1.1 print f.version 1.1 f.version 0.1 p...

Python類屬性與例項屬性

類屬性為所有例項擁有,例項屬性為單個例項擁有class cls object count 0 count 0def init self cls.count cls.count 1 self.count self.count 1 p cls print 類屬性 d p.count print 例項屬性...