想象一下一个模块,其中调用base了一个类Base。现在在另一个名为的模块中,从sub继承一个类:SubBase
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
波斯汪
相关分类