我正在用python处理属性,我想知道@propertyname.deleter decorator是如何工作的。我可能遗漏了一些东西,谷歌找不到清晰的答案。
我想要实现的是,当调用这个删除器行为时,我可以触发其他操作(例如:使用我的3D应用程序SDK)。
目前,一个简单的print()似乎不会被触发。
使用del(instance.property)删除属性时是否激发了deleter?
否则,我如何才能做到这一点?
class M(): def __init__(self): self._m = None @property def mmm(self): return self._m @mmm.setter def mmm(self, val): self._m = val @mmm.deleter def mmm(self): print('deleting') # Not printing del(self._m)if __name__ == '__main__': i = M() i.mmm = 150 print(i.mmm) del(i.mmm) print(i.mmm)
非常感谢(:

最佳答案

使m成为一个新的样式类:

class M(object):

请参见:
属性不适用于经典
上课,但你不清楚
尝试此操作时出错。你的GeT
将调用方法,因此
工作,但基于属性
赋值,经典类实例
只需在其
不调用属性的set方法的dict,然后,
属性的get方法将不会
也可以调用。(您可以覆盖
塞塔特要解决这个问题,但代价太高了。)

09-16 19:31