我有4个不同的课程:
meta
-> Limb
-> Arm
-> Leg
meta是每个班级的基础。肢体继承自元。手臂和腿从Limb继承
Arm.py和Leg.py文件具有完全相同的代码,只是一些不同的命名约定字符串。
当我执行以下操作时:
import Limb.Arm
reload(Limb.Arm)
import Limb.Leg
reload(Limb.Leg)
def build():
arm = Limb.Arm.Arm()
build()
我收到错误:
# TypeError: unbound method __init__() must be called with Limb instance as first argument (got Arm instance instead) #
但是,当我尝试构建Leg模块时......
import Limb.Arm
reload(Limb.Arm)
import Limb.Leg
reload(Limb.Leg)
def build():
leg= Limb.Leg.Leg()
build()
一切正常:
==> SUCCESS: L_Leg created!
如果我注释掉这样加载Leg模块,代码也可以正常运行。
import Limb.Arm
reload(Limb.Arm)
#import Limb.Leg
#reload(Limb.Leg)
有人可以解释为什么会这样吗?在导入Arm模块后导入Leg模块时是否会覆盖某些内容,因为它们都从Limb模块继承?我在这里有点不知所措。
答案 0 :(得分:1)
您可能需要创建一个命名空间,然后它才能正常工作
import Limb.Arm as limbArm
reload(limbArm)
import Limb.Leg as limbLeg
reload(limbLeg)
def build():
arm = limbArm.Arm()
leg = limbLeg.Leg()
build()
答案 1 :(得分:1)
经过一些试验和错误后,我想出了这个。我不知道这是否是“正确”的做法,但它有效:
<md-progress-circle
mode="determinate"
value= "+{{seconds}}"
aria-valuemax="60"> // I want to do something here.
</md-progress-circle>
答案 2 :(得分:0)
很难知道你怎么没有看到你的模块布局。但这听起来像是你颠倒了类的布局,以便导入重新定义Limb
。你可能想要像这样组织你的包:
limb
+ core.py
+ arm.py
+ leg.py
使用core.py
中的公共基类。在arm.py
和limb.py
中,您导入core.Limb
并从中继承。这将允许您迭代派生类,而不会在重新加载时搞乱继承。