说,我有一些MainClass
,它在某些方面已经将OtherClass
的对象实例化为MainClass
的属性。
mainobj = MainClass()
isinstance(mainobj.otherclassobj, OtherClass) == True
现在,我想扩展OtherClass
,然后将MainClass
与新的扩展类一起使用。
我是否有更方便的选项,除了扩展MainClass
并重新定义所有实例化self.otherclassobj
的方法以从ExtendedOtherClass
执行此操作?
答案 0 :(得分:2)
如果您还不需要OtherClass
,则可以执行类似
from other_class_module import ExtendedOtherClass as OtherClass
如果您需要两个类,或逻辑/方法已更改 - 您需要重新实现/扩展MainClass
。
答案 1 :(得分:1)
如果您可以略微更改MainClass
的实施,则不需要继承它。只是喜欢
class MainClass:
def __init__(self, ..., otherclass=OtherClass):
self.otherclassobj = otherclass()
...
...
然后MainClass
默认使用OtherClass
,但您可以传递ExtendedOtherClass
作为关键字参数。