观察属性的变化

观察属性的变化

问题描述:

我需要一个类似于gobject.io_add_watch但函数变量的函数。例如,它需要将变量stop初始化为stop = False,当停止变为True时,它必须调用一个函数。我不能有一个单独的线程在time.sleep循环中观察变量。观察属性的变化

有没有这样的功能或方法来做到这一点?

+2

只要有'.stop()'会做这件事的多个解释和逻辑的方式; “stop”是你做的事情,它触发的行为可能很昂贵,而设置一个变量通常很便宜(我意识到在这个用例中人们应该意识到它会做什么,但是这个原则是成立的)。 'x.stop()'和'x.start()'比'x.stop = True'和'x.stop = False'或'x.running = False'和'x.running = True'或等价物。 – 2010-12-19 06:52:16

+0

即使我展示了如何做到这一点,我也同意你的看法。当然,这项技术还有其他更好的应用。 :) – 2010-12-19 11:57:43

一类使用property

class Stopwatch(object): 
    def __init__(self, callback): 
     self._stop = False 
     self.callback = callback 

    @property 
    def stop(self): return self._stop 

    @stop.setter 
    def stop(self, value): 
     self._stop = value 
     if value: self.callback() 
+0

+1:不错的使用案例。 – 2010-12-19 06:31:45

+0

非常感谢! – Nolhian 2010-12-19 06:48:46