从现有的类对象修改/删除__dunder__方法是否安全?

时间:2019-04-03 18:39:02

标签: python datamodel

我想到了一个疯狂的延迟加载黑客,其中应该在运行时从类型中删除数据模型挂钩(影响所有实例)。正确/按预期运行:

>>> class Crazy: 
...     def __getattr__(self, attr): 
...         del Crazy.__getattr__ 
...         return 'world' 
... 
>>> c = Crazy() 
>>> c.hello 
'world'
>>> c.hello 
AttributeError: 'Crazy' object has no attribute 'hello'

我记得在Python中无法解析补缀到 instance 上的dunder名称,但是不确定动态修改 type 的dunder名称是否有任何陷阱。

此行为在Python中是否可以保证/可靠?

0 个答案:

没有答案