检测Python变量值的变化

4 投票
4 回答
12361 浏览
提问于 2025-04-17 03:00

有没有什么方法可以在Python中,每次一个变量的值改变时调用一个函数呢?

就像一个监听器那样,可能吗?

具体来说,我指的是那种情况,只有变量在不同脚本之间共享,就像GAE会话那样。(它使用Cookies、Memcache等来共享数据)

举个例子:脚本A和脚本B共享一个会话变量。当脚本B改变这个变量时,脚本A需要调用一个方法来处理这个变化。

4 个回答

0

你可能需要扩展“int”或“float”这两种类型,然后重写“setattr”这个函数,让它按照你自己的方式来响应。

class MyInt(int):
    ...
    def __setattr__(self, attr, val):
        ...
        super(MyInt, self).__setattr__(attr, val)
        ...

var = MyInt(5)
3

如果这个变量是一个类的属性,你可以在这个类里面定义一个叫做 __setattr__ 的方法。

6

使用属性。只有可变的值才能一开始就发生变化。

class Something(object):
    @property
    def some_value(self):
        return self._actual
    @some_value.setter
    def some_value(self, value):
        print ("some_value changed to", value)
        self._actual = value

撰写回答