Python循环导入?

所以我得到这个错误

Traceback (most recent call last):

File "/Users/alex/dev/runswift/utils/sim2014/simulator.py", line 3, in <module>

from world import World

File "/Users/alex/dev/runswift/utils/sim2014/world.py", line 2, in <module>

from entities.field import Field

File "/Users/alex/dev/runswift/utils/sim2014/entities/field.py", line 2, in <module>

from entities.goal import Goal

File "/Users/alex/dev/runswift/utils/sim2014/entities/goal.py", line 2, in <module>

from entities.post import Post

File "/Users/alex/dev/runswift/utils/sim2014/entities/post.py", line 4, in <module>

from physics import PostBody

File "/Users/alex/dev/runswift/utils/sim2014/physics.py", line 21, in <module>

from entities.post import Post

ImportError: cannot import name Post

并且你可以看到我进一步使用了相同的import语句,并且可以正常工作吗?关于循环导入是否有一些不成文的规定?如何在调用堆栈的更下方使用同一类?

回答:

我认为jpmc26的答案虽然绝非错误,但在循环进口上却过于严格。如果正确设置它们,它们可以正常工作。

最简单的方法是使用import my_module语法,而不是from my_module import some_object。前者几乎总是可以工作,即使my_module包括在内也能使我们重新获得利益。后者只有在my_object中已经定义my_module的情况下才有效,在循环导入中可能不是这种情况。

要针对你的具体情况:尝试更改entities/post.pydo import physics,然后引用physics.PostBody而不是PostBody直接引用。同样,更改physics.pydo import entities.post,然后使用entities.post.Post而不是just Post

以上是 Python循环导入? 的全部内容, 来源链接: utcz.com/qa/398579.html

回到顶部