Каково различие между атрибутами экземпляра и классом?

127
задан martineau 8 June 2018 в 17:16
поделиться

2 ответа

Вне соображений производительности существует значительное семантическое различие. В случае атрибута класса существует всего один упомянутый объект. В instance-attribute-set-at-instantiation может быть несколько упомянутых объектов. Например

>>> 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    
[]
140
ответ дан 24 November 2019 в 00:46
поделиться

Различие - то, что атрибут на классе совместно используется всеми экземплярами. Атрибут на экземпляре уникален для того экземпляра.

При прибытии из C++, атрибуты на классе больше похожи на статические членские переменные.

36
ответ дан 24 November 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: