Python

时间:2015-08-25 23:05:53

标签: python function class attributes

我们说我上课了。我希望这个类具有属性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值。

2 个答案:

答案 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

这很简单。毕竟可能最终是平庸的。