在 Python 中跨实例维护静态变量的公共值
Maintaining a common value of a static variable across instances in Python
我读到要创建一个静态变量,我们可以在 class 定义中而不是在方法中声明它们。但是从 Java 的世界来看,我觉得它并不像 "static" 那样,因为从一个实例更改变量的值会创建自己的变量,不同于 class 变量。
我正在寻找一种方法来确保变量的值在不同的实例中保持一致。 Whosebug 上的一个答案建议了以下一段代码,它似乎对我来说效果不佳。
class Test(object):
_i = 3
@property
def i(self):
return self._i
@i.setter
def i(self,val):
self._i = val
x1 = Test()
x2 = Test()
x1.i = 50
assert x2.i == x1.i # The example suggested no error here but it doesn't work for me
能否举例说明一下是否可以实现?
class Test(object):
_i = 3
@classmethod
def set_i(self, value):
self._i = value
def get_i(self):
return self._i
i = property(get_i, set_i)
x1 = Test()
x2 = Test()
print(x1.i) # 3
print(x2.i) # 3
x1.set_i(50)
print(x1.i) # 50
print(x2.i) # 50
我读到要创建一个静态变量,我们可以在 class 定义中而不是在方法中声明它们。但是从 Java 的世界来看,我觉得它并不像 "static" 那样,因为从一个实例更改变量的值会创建自己的变量,不同于 class 变量。 我正在寻找一种方法来确保变量的值在不同的实例中保持一致。 Whosebug 上的一个答案建议了以下一段代码,它似乎对我来说效果不佳。
class Test(object):
_i = 3
@property
def i(self):
return self._i
@i.setter
def i(self,val):
self._i = val
x1 = Test()
x2 = Test()
x1.i = 50
assert x2.i == x1.i # The example suggested no error here but it doesn't work for me
能否举例说明一下是否可以实现?
class Test(object):
_i = 3
@classmethod
def set_i(self, value):
self._i = value
def get_i(self):
return self._i
i = property(get_i, set_i)
x1 = Test()
x2 = Test()
print(x1.i) # 3
print(x2.i) # 3
x1.set_i(50)
print(x1.i) # 50
print(x2.i) # 50