我想在设置对象属性时调用一个函数:
class MyClass():
myattrib = None
def __setattr__(self, prop, val):
self.myattrib = val
print("setting myattrib")
x = MyClass()
x.myattrib = "something"
问题是,这会产生无限递归。
这个想法是在设置成员变量时调用一个函数(并实际设置该成员变量),但同时运行额外的代码(print()
如上例中的语句所示)。
另一种明显的方法是使用set_attrib()
函数,这在 Java 中很常见,但我想用Python的方式来做,直接设置属性,但同时运行额外的代码。