我有一个来自类的实例变量,我想在我的变量发生变化时执行一些代码。
我知道属性和观察者模式事件处理,但我认为这对我的情况没有帮助。
例:
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
你可以在你的类上实现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。塞塔特尔
注意:这也将在初始化调用期间打印。