Python 从现有类对象中修改/删除_udunder_uu方法是否安全?
我想到了一个疯狂的延迟加载黑客,在运行时应该从类型中删除数据模型挂钩(影响所有实例)。这项工作与预期相符:Python 从现有类对象中修改/删除_udunder_uu方法是否安全?,python,datamodel,Python,Datamodel,我想到了一个疯狂的延迟加载黑客,在运行时应该从类型中删除数据模型挂钩(影响所有实例)。这项工作与预期相符: >>疯狂的职业: ... def _ugetattr _;(self,attr): ... 德尔疯了 ... 返回“世界” ... >>>c=疯狂() >>>你好 “世界” >>>你好 AttributeError:“疯狂”对象没有属性“hello” 我记得在Python中不可能将dunder名称monkeypatch解析到实例上,但不确定动态修
>>疯狂的职业:
... def _ugetattr _;(self,attr):
... 德尔疯了
... 返回“世界”
...
>>>c=疯狂()
>>>你好
“世界”
>>>你好
AttributeError:“疯狂”对象没有属性“hello”
我记得在Python中不可能将dunder名称monkeypatch解析到实例上,但不确定动态修改类型的dunder名称是否有任何缺陷
在Python中,这种行为是否有保证/可靠?删除该方法而不是设置实例变量标志来指示第一次执行后该方法的行为,您打算从中获得什么好处?它应该删除该魔术(在魔术达到目的后)Monkeypatching实例失败,因为查找是在类上执行的,而不是在实例上执行的。在这里,您直接在类上操作。就这一点而言,它看起来很好。我不想在不了解您要删除属性的特定上下文的情况下进一步评论。downvoter是否有任何评论?