【问题标题】:Watching a property for changes观察属性的变化
【发布时间】:2011-05-27 18:43:32
【问题描述】:

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

有这样的功能或方法吗?

【问题讨论】:

  • 只有.stop() 会是一种更具解释性和逻辑性的方式; “停止”是你要做的事情,它触发的动作可能很昂贵,而仅仅设置一个变量通常很便宜(我意识到在这个用例中人们应该意识到它会做什么,但原则是成立的)。 x.stop()x.start()x.stop = Truex.stop = Falsex.running = Falsex.running = True 或等效项更整洁。
  • 尽管我展示了如何做到这一点,但我同意你的观点。当然,该技术还有其他更好的应用。 :)

标签: python variables watch


【解决方案1】:

在类中使用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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 2017-09-07
    • 2018-04-10
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    相关资源
    最近更新 更多