2012-09-01 59 views
0

说,我有一些MainClass它在其方法的某个点上具有作为MainClass属性OtherClass的对象的实例化。在python中扩展类

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

现在,我希望延长OtherClass,然后用MainClass有新的扩展类。

我是否有更方便的选择,除了扩展MainClass并重新定义其所有方法self.otherclassobj实现它从ExtendedOtherClass

回答

1

如果您可以稍微更改MainClass的实施,则不需要继承它。只要有默认使用OtherClass

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

然后MainClass意志,但你可以通过ExtendedOtherClass作为关键字参数。

2

如果您不需要OtherClass已经,你可以这样做

from other_class_module import ExtendedOtherClass as OtherClass 

如果您需要这两个类,或逻辑/方法改变 - 你需要重写/扩展MainClass