Я пытаюсь узнать о статических переменных в python. По словам this ответа на этот кусок кода должен сделать i
уникальным для всех объектов класса Test
Статические переменные экземпляра в python
Код:
>>> class Test(object):
... _i = 3
... @property
... def i(self):
... return self._i
... @i.setter
... def i(self,val):
... self._i = val
...
>>>
>>> x1 = Test()
>>> x1.i
3
>>> x2 = Test()
>>> x2.i
3
>>> x1.i = 10
>>> x1.i
10
>>> x2.i
3
Но как вы можете видеть объект x1.i не равен x2.i.
Я попытался сделать это как в python 2.7, так и в 3.4, но результат такой же. Я думаю, что мое понимание об этой концепции неверно.
Может кто-нибудь, пожалуйста, объясните это мне или направьте меня на ресурс.
Они уникальны, как вы ожидали в вашем втором предложении. В чем ваш вопрос? – Selcuk
Этот связанный ответ ошибочен. 'self._i = val' присваивает локальному атрибуту этого экземпляра * _i * (который затем меняет класс attr), а не атрибут класса. –
Вы должны взглянуть на [это] (http://stackoverflow.com/a/69067/4642859) – 3kt