使模块使用派生类?

时间:2016-02-25 16:05:38

标签: python class inheritance module project

我试图扩展模块功能。该模块包含一个类(BaseContainer),该类包含同一模块中另一个类(BaseObject)的成员实例。我想扩展这两个类。但BaseContainer似乎使用BaseObject而不是扩展的派生对象。

编辑:尝试重组项目。相同的结果

foo/
    __init__.py
    bar/
        __init.py__
            from .BaseModule import BaseObject
            from .BaseModule import BaseContainer
  

BaseModule.py

           class BaseObject:
               def __init__(self):
                   self.aMember = True

           class BaseContainer:
               def __init__(self):
                   self.myObject = BaseObject()
  

DerivedModule.py

from . import BaseModule

class DerivedObject(BaseModule.BaseObject):
    def __init__(self):
        BaseObject.__init__(self)
        self.derivedMember = True

class DerivedContainer(BaseContainer):
    def __init__(self):
        BaseContainer.__init__(self)
        Other code

但是,如果我实例化DerivedContainer,则其myObject没有derivedMember

我对此结果并不感到惊讶,基本模块对DerivedContainer一无所知是有意义的。但是有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

DerivedModule.py结束时添加:

BaseModule.BaseObject = DerivedObject

注意:如果您这样做,那么其他模块也会获得DerivedObject而不是BaseObject