【发布时间】:2021-10-02 05:02:45
【问题描述】:
我有一个看起来像这样的类:
class MyClass:
_properties: Dict[str, Any]
@property
def properties(self) -> Dict[str, Any]:
...
我希望在字典更改时收到通知。所以当用户这样做时:
obj = MyClass()
obj.properties['optimization'] = '-O3'
我想调用一些回调函数,理想情况下是一个回调函数,它可以访问创建/修改的键和值。
我唯一能想到的就是继承dict 并覆盖__setitem__,但我想知道是否有更好的方法来做到这一点。
【问题讨论】:
-
IMO 继承
dict为NotifierDict是一种干净的方法。你到底不喜欢这个主意的什么地方? -
如果你不想继承
dict,你可以选择继承collections.UserDict