我想到了一个疯狂的延迟加载黑客,其中应该在运行时从类型中删除数据模型挂钩(影响所有实例)。正确/按预期运行:
>>> 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中是否可以保证/可靠?