0

比如说,我有一些MainClass在其方法中的某个时刻将 a 的对象实例OtherClass化为MainClass.

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

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

MainClass除了扩展和重新定义所有实例化的方法之外,我是否有更方便self.otherclassobj的选择ExtendedOtherClass

4

2 回答 2

2

如果你还不需要OtherClass,你可以做类似的事情

from other_class_module import ExtendedOtherClass as OtherClass

如果您需要这两个类,或者更改逻辑/方法 - 您需要重新实现/扩展MainClass.

于 2012-09-01T17:08:47.210 回答
1

如果你可以稍微改变它的实现MainClass,你就不需要继承它。只要有类似的东西

class MainClass:
    def __init__(self, ..., otherclass=OtherClass):
        self.otherclassobj = otherclass()
        ...
    ...

然后MainClass将默认使用OtherClass,但您可以ExtendedOtherClass作为关键字参数传入。

于 2012-09-01T17:11:06.570 回答