Python,当一些列表元素发生变化时执行函数

时间:2017-11-23 14:18:45

标签: python observable

我有以下问题。我有一个Person类型的元素列表。他们内部有一些不断变化的int成员。当发生这种变化时,我想调用另一种方法。是否有人可以提出一些解决我的问题的方法如何在成员更改后立即调用该方法?

class Person:
    def __init__(self):
        self.age = 20

class Controller:
   p1 = Person()
   p2 = Person()

   personList = [p1,p2]

   def hb:
       print("happy birthday")

我想在人的年龄改变时调用hb方法。以下代码只是展示此事的一个示例。

1 个答案:

答案 0 :(得分:1)

使用getter和setter装饰器:

class MyClass:
    def __init__(self):
        self.init = True
        self.attribute = 1
        self.init = False

    @property
    def attribute(self):
        # Do something if you want
        return self._attribute

    @attribute.setter
    def attribute(self, value):
        if not self.init:
            print('Value of "attribute" changed:', value)
        self._attribute = value

testobject = MyClass()
testobject.attribute = 2

我添加了一个额外的init变量,以防止在初始阶段调用已更改的代码。