如何在类中使用一个独立于python中创建的任何对象的变量?

Ind*_*pta 2 python variables class

我想使用一个独立于类可能具有的任何对象的变量:

    class A:
        var = 5
    ob1 = A()
    ob2 = A()
    ob1.var += 2
    print ob2.var
Run Code Online (Sandbox Code Playgroud)

我希望一旦ob1将var的值从5修改为7,ob2.var也会显示7而不是5.如何执行此操作?

And*_*ark 5

当您ob1.var += 2不修改类属性时,您正在创建一个与class属性同名的新实例变量.例如:

>>> ob1 = A()
>>> ob1.var += 2
>>> ob1.__dict__
{'var': 7}
>>> ob1.__class__.__dict__
{'var': 5, '__module__': '__main__', '__doc__': None}
Run Code Online (Sandbox Code Playgroud)

如果要修改类属性,只需使用A.var += 2.如果您需要从可以使用的实例执行此操作ob1.__class__.var += 2.

以下是如何使用新样式类的属性实现所需的行为:

class A(object):
    _var = 5

    @property
    def var(self):
        return self.__class__._var

    @var.setter
    def var(self, value):
        self.__class__._var = value
Run Code Online (Sandbox Code Playgroud)

现在有了这个类,当你var在一个实例上获取或设置变量时A,它实际上将获取或设置一个类属性.例如:

>>> ob1 = A()
>>> ob2 = A()
>>> ob1.var += 2
>>> ob2.var
7
Run Code Online (Sandbox Code Playgroud)