3

我有三个文件,导入语句按以下方式完成:

主文件

from file1 import *
from file2 import *
def someFunc():
    print("hi")

文件1.py

from main import someFunc as sayHi
class A:
    def __init__(self):
        pass
sayHi()

文件2.py

from file1 import *
a = A()

一旦写入 file1.py 中的导入行,我就会收到此错误:ImportError: cannot import name someFunc. 使用另一个编译器,我得到NameError: Name 'A' is not defined. 为什么会这样?

4

2 回答 2

2

当你运行时main.py,它会执行它的第一行,即 import file1.py。这导致file1.py运行。它尝试从 导入,但请记住,到目前为止main.py,只有第一行已经运行 -尚未定义。因此,该导入失败。main.pysomeFunc

于 2012-08-13T06:29:17.063 回答
0

您需要将 file1 和 file2 导入移动到文件的底部才能使其正常工作,但最好避免循环导入。

def someFunc():
    print("hi")
from file1 import *
from file2 import *

文件1.py

class A:
    def __init__(self):
        pass
from main import someFunc as sayHi
sayHi()

文件2.py

from file1 import *
a = A()
于 2012-08-13T06:30:07.327 回答