想象一个模块被调用,其中调用base
了一个类Base
。现在在另一个名为 的模块中,sub
继承了一个类Sub
:Base
import base
class Sub(base.Base):
pass
现在,如果我们添加第三个类,它继承自Sub
并接受一个必须是类型Base
或其子类之一的参数:
import sub
class Deep(sub.Sub):
def __init__(self, parent):
if isinstance(parent, sub.base.Base):
pass
在继承树中越往下走,通往的路径Base
就会变成thedeepest.deeperanddeeper.reallydeep.deep.sub.base.Base
,这是没有人愿意的。
我当然可以from base import *
然后from sub import *
只使用Base
,但是有没有办法导入,以便我可以只使用我班级的原始模块的前缀?
例如:
import deep
class ReallyDeep(deep.Deep):
def __init__(self, parent):
# I know my polymorphism, this is just an example.
if isinstance(parent, sub.Sub):
pass
elif isinstance(parent, base.Base):
pass