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.如何执行此操作?
当您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)
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |