如何在实例变量的更改上执行代码?

时间:2019-01-08 18:42:31

标签: python event-handling

我有一个来自类的实例变量,当变量发生变化时,我想执行一些代码。

我知道属性和Observer模式事件处理,但我认为这对我没有帮助。

示例:

class Thing:
  def __init__(self):
      self.thing = []
      self.thing2 = ""
  def code_that_executes(self):
      self.thing2 = self.thing[0]
s = Thing()
s.thing.append("Something") #The event 

1 个答案:

答案 0 :(得分:0)

您可以在课程上实现 setattr 。这是一个示例:

class A:
    def __init__(self):
        self.A = 5
    def __setattr__(self, name, value):
        if name == "A":
            print("A has changed to: {0}".format(value))
现在,当您有一个对象foo = Foo()并调用foo.bar = 5时,您将得到结果:
bar changed to 5

请参见https://docs.python.org/3/reference/datamodel.html#object.setattr

注意:这也会在 init 调用期间打印。