我试图扩展模块功能。该模块包含一个类(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
一无所知是有意义的。但是有办法解决这个问题吗?
答案 0 :(得分:0)
在DerivedModule.py
结束时添加:
BaseModule.BaseObject = DerivedObject
注意:如果您这样做,那么其他模块也会获得DerivedObject
而不是BaseObject
。