python - 当类的 __init__ 变量更改时如何检测和触发函数

标签 python class observer-pattern

我希望能够监视变量并在类的实例发生更改时调用类中的函数。

class Example:
    def __init__(self, content):
        self.content = content

example1 = Example('testing')

example1.content = 'testing123'

我希望能够检查 example1.content 是否已更改/更新,如果已更改,请运行一些代码。

最佳答案

这是您要找的吗?

class Example:
    def __init__(self, content):
        self.content = content

    def __setattr__(self, name, value):
        if name == 'content':
            if not hasattr(self, 'content'):
                print(f'constructor call with value: {value}')
            else:
                print(f'New value: {value}')
        super().__setattr__(name, value)


if __name__ == '__main__':
    example1 = Example('testing')
    example1.content = 'testing123'

输出:

constructor call with value: testing
New value: testing123

关于python - 当类的 __init__ 变量更改时如何检测和触发函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62763958/

相关文章:

python - 在 Python 中重新格式化表

swift - 在 Swift 3 中使用 NSHashTable 实现观察者模式

Java棋盘游戏实时服务器,我应该使用不变性吗?

python - 如何在 cython 模块中使用外部包装类?

python - PyQt点击图像的不同部分有各自的功能

python - 使用 librosa 隔离音频前景并转换回音频流

Python:常量类

python - 如何从父类访问子类方法?

c# - 请求数组到另一个类

data-binding - 从不同的 View 模型同步可观察的简单、干净的方法