3

3つのファイルがあり、インポートステートメントは次のように実行されます。

main.py

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

file1.py

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

file2.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と、インポートする最初の行が実行され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 *

file1.py

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

file2.py

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