1

import xを使用する代わりに、ステートメントを使用してモジュールをインポートすることで、Python の循環依存関係を回避する方法を理解しようとするテスト環境がありますfrom x import y

test/
    __init__.py
        testing.py
    a/
        __init__.py
        m_a.py
    b/
        __init__.py
        m_b.py

ファイルの内容は次のとおりです。

testing.py:

from a.m_a import A

m_a.py:

import b.m_b
print b.m_b
class A:
    pass

m_b.py:

import a.m_a
print a.m_a
class B:
    pass

理解できない状況があります:

モジュールから印刷ステートメントを削除するm_a.pyと、m_b.pyまたはm_b.pyこれだけで問題なく動作しますが、印刷が に存在する場合m_b.py、次のエラーがスローされます。

File "testing.py", line 1, in <module>
  from a.m_a import A
File "/home/enric/test/a/m_a.py", line 1, in <module>
  import b.m_b
File "/home/enric/test/b/m_b.py", line 3, in <module>
  print a.m_a
AttributeError: 'module' object has no attribute 'm_a'

あなたはなにか考えはありますか?

4

1 に答える 1