使模块使用派生 class?

Make a module use a derived class?

我正在尝试扩展模块功能。该模块包含一个 class (BaseContainer),它包含同一模块中另一个 class (BaseObject) 的成员实例。我想扩展两个 classes。但是 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 是有道理的。但是有办法解决这个问题吗?

DerivedModule.py末尾添加:

BaseModule.BaseObject = DerivedObject

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