首页 > 解决方案 > 更改父级继承的python类的方法

问题描述

我有一个继承自其他两个类的类,所以:

# library_file.py

from foo import A, B

class Base(A, B):
      ...

...在其他地方我有一个继承自这个基类的子类...

# my_file.py

from bar import C

from library_file import Base

class MyClass(Base):
      .....

我希望 Base 实际上继承 C 而不是 B 而不会破解原始文件(library_file.py)。有没有办法解决这个问题?

标签: pythonpython-3.xclass

解决方案


由于B是在foo而不是在同一个文件中定义的,因此您可以在导入之前先Base修补:foo.Bbar.CBase

from unittest.mock import patch
from bar import C

with patch('foo.B', C):
    from library_file import Base

print(Base.__bases__)

这输出:

(<class 'foo.A'>, <class 'bar.C'>)

演示:https ://repl.it/@blhsing/KindLovingInfo


推荐阅读