我们说我上课了。我希望这个类具有属性x,这样每当我使用没有实例化的类时,我都可以调用x的当前值,当我更改x的值时,运行一个方法,该方法接受我放入x的值并且还有别的东西。
"实施例"是一个班级:
[IN]: Example(y).x
[OUT]: 0
[IN]: Example(y).x=2
[OUT]: x(2)=6
[IN]: Example(y).x
[OUT]: 6
很抱歉,如果这是平庸的话。我试着搜索,但没有想出任何东西。
示例&x; s值必须具有属于特定类的配对y值。
答案 0 :(得分:0)
您可以覆盖班级上的__setattr__
方法:
class Test(object):
def foo(self, v):
return v + 1
def __setattr__(self, attribute, v):
return super(Test, self).__setattr__(attribute, self.foo(v))
t = Test()
t.a = 1 # t == 2
答案 1 :(得分:0)
以下是您的工作方式:
values = {}
class Example(object):
def __init__(self,y):
self.y=y
@property
def value(self):
values[self.y]=some_data_object_method(self.y)
return some_data_object_method(self.y)
@value.setter
def value(self,new_value):
if new_value not in values.itervalues():
some_data_object_method(self.y) = new_value
这很简单。毕竟可能最终是平庸的。