首页 > 解决方案 > 属性更新后的对象事件

问题描述

示例代码:

class objval(object):
    def __init__(self):
        self.a = 1
    def __setattr__(self, name, value):
        #run some function AFTER attribute is set

    test = objval()
    test.a = 2

上述问题是def __setattr__(self, name, value):在之前而不是之后运行。对象属性更改后是否会触发事件?

标签: pythonpython-3.x

解决方案


这是在设置值使用 set-attr 进行一些操作的方法:

class Objval(object):
    def __init__(self):
        self.a = 1

    def __setattr__(self, name, value):
        super().__setattr__(name, value)

        #run some function AFTER attribute is set
        print(f"doing something here, name is '{name}' value is '{value}'")

test = Objval()
test.a = 2

这段代码的输出是:

doing something here, name is 'a' value is '1'
doing something here, name is 'a' value is '2'

推荐阅读