gpt4 book ai didi

python - python中的静态实例变量

转载 作者:太空宇宙 更新时间:2023-11-04 05:29:37 26 4
gpt4 key购买 nike

我正在尝试学习 python 中的静态变量。根据this回答 这段代码应该使 i 对于类 Test

的所有对象都是唯一的

代码:

>>> 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 中执行此操作,但结果相同。我认为我对这个概念的理解是错误的。

谁能给我解释一下或指导我找到资源。

最佳答案

如前所述,linked answer弄错了。

class Test(object):
i = 0


t = Test()
t.i = 4
print t.i
>>> 4
print t.__class__.i
>>> 0

class 上声明的字段在实例上找不到时会被查找,但您不能直接通过self 修改该类。 self.i = 4 总是修改实例。你可以做类似的事情

class Test(object):
_i = 0

@property
def i(self):
return self._i

@i.setter
def i(self, value):
Test._i = value

但是到处复制类名似乎不是一个好主意,而且 self.__class__ 不能很好地处理继承。这也完全隐藏了一个事实,即 i 最初是一个类变量,这可能是也可能不是一个好主意。

关于python - python中的静态实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37563356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com