在 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