<p>经过一番考验,我终于找到了解决办法。也许这不是最好的方法(修复递归导入),但它符合我最初的想法。
这是在这个<strong><a href="https://www.python.org/dev/peps/pep-0484/#forward-references" rel="nofollow noreferrer">link</a></strong>中说的。在</p>
<p>经过一番思考,我想这可能叫做转发参考,广告根据那个doc链接。我将这两个类改写如下:</p>
<p>在car.py组件公司名称:</p>
<pre><code>__all__ = ("ComponentOfCar");
import Car;
class ComponentOfCar(object):
__slots__=("owner","name");
def __init__(self, owner:'Car.Car',prop:dict={"name":"NoName"}):
self.owner = owner;
self.name = prop["name"];
if __name__=="__main__":
c=Car.Car({"type":"bus","color":"red"});
door1=ComponentOfCar(c,{"name":"frontdoor"});
door2=ComponentOfCar(c,{"name":"reardoor"});
c.InstallComponent(door1);
c.InstallComponent(door2);
print("We got the car",c);
for component in c.m_lstComponents:
print(component.name,component.owner);
comp1=c.m_lstComponents[0];#now we look at the first component
print("the component %s was installed on a %s %s"%(str(comp1),
comp1.owner.color,comp1.owner.type));
</code></pre>
<p>在汽车.py公司名称:</p>
^{pr2}$
<p>现在,我可以正确地运行这段代码,得到的输出如下:</p>
<pre><code>We got the car <__main__.Car object at 0x0000015904C6AAC8>
frontdoor <__main__.Car object at 0x0000015904C6AAC8>
reardoor <__main__.Car object at 0x0000015904C6AAC8>
the component <ComponentOfCar.ComponentOfCar object at 0x0000015904C647F0> was installed on a red bus
</code></pre>
<p>现在我可以严格按照汇编代码编写python代码了。我可以继续我的工作。在</p>
<p>如果有更好的方法来满足我的需要,请纠正我。在</p>
<p>谢谢大家。:)</p>