例如,我有一个类:
import datetime
class Obj:
def __init__(self, attribute_1):
self.attribute_1 = attribute_1
self.last_edited = None
我希望它能够做到这一点:
# Creating object
obj1 = Obj("a")
obj1.attribute_1 = "b" # obj1.last_edited should have changed to datetime.datetime.now()
如果要直接更改obj1的“属性_1”(无任何设置器),我不确定如何实现对obj1的“上次编辑”属性的更改
提前谢谢
所有Python对象都有一个名为
__setattr__
的内置方法,每当类中的字段发生更改时都会调用该方法。默认情况下,此方法更新类字典中的值(存储在内部以表示类实例的状态)。您可以通过定义自定义__setattr__
方法来重写此行为。对于您的用例,函数可能如下所示:注意,我们需要使用
super
调用来避免递归(使用基类object
的__setattr__
方法)相关问题 更多 >
编程相关推荐