在python中扩展类

时间:2012-09-01 17:04:15

标签: python inheritance

说,我有一些MainClass,它在某些方面已经将OtherClass的对象实例化为MainClass的属性。

mainobj = MainClass()
isinstance(mainobj.otherclassobj, OtherClass) == True

现在,我想扩展OtherClass,然后将MainClass与新的扩展类一起使用。

我是否有更方便的选项,除了扩展MainClass并重新定义所有实例化self.otherclassobj的方法以从ExtendedOtherClass执行此操作?

2 个答案:

答案 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作为关键字参数。