有没有办法替换Python为类创建的默认__mro__
属性?我希望有一个不同的我为了解决而制作的。
现在,当我尝试将某些内容分配给__mro__
时,我得到一个"只读属性"异常。
答案 0 :(得分:0)
我找到了一种更改对象的类或重写其mro的方法:
def upgrade_class(obj, old_class, new_class):
if obj.__class__ is old_class:
obj.__class__ = new_class
else:
mro = obj.__class__.mro()
def replace(cls):
if cls is old_class:
return new_class
else:
return cls
bases = tuple(map(replace, mro[1:]))
old_base_class = obj.__class__
new_class = type(old_base_class.__name__, bases, dict(old_base_class.__dict__))
obj.__class__ = new_class