Python中拷贝继承类后,能否修改其继承结构?
解决方案
你的思路不可行,直接定义class D(C): pass再修改继承关系的做法在Python里走不通——类的继承结构在定义完成后就无法更改。正确的做法是完整复制类C的所有代码,然后基于这些代码定义新类D并让它继承自B:
class D(B): # 这里粘贴类C的所有代码(包括那些未知修改后的内容) blah blah
需要注意几个细节:
- 如果C的代码里有直接引用
C类本身的地方(比如C.some_method()或者self.__class__ is C这类判断),要把这些地方替换成D,否则会出现逻辑错误。 - 若C中使用了
super()调用父类A的方法,改成继承B后,super()会指向B的方法,需要确认B是否提供了对应的接口,或者根据需求调整这些调用逻辑,避免出现不兼容的情况。 - 确保复制的是最终修改后的C类代码,而不是原始未修改的版本,这样D才能保留那些未知的修改。
内容的提问来源于stack exchange,提问作者DeltaTron
相关产品推荐
相关产品推荐

