Python のインポート機能は、今でもときどき混乱します。次に例を示します。
私のプロジェクトのパッケージ構造は次のとおりです。
Project/
src/
example/
__init__.py
an_example.py
top/
__init__.py
lin/
__init__.py
factory.py
でan_example.py
、書きたいのですが
from top import lin
if __name__ == '__main__':
a = lin.factory.AClass()
ただし、これは次の場合に失敗します。
a = lin.factory.AClass()
AttributeError: 'module' object has no attribute 'factory'
an_example.py
次のように書くと動作します:
from top.lin import factory
if __name__ == '__main__':
a = factory.AClass()
最初のバージョンのように import ステートメントを書くのがなぜ間違っているのか説明してもらえますか? のような完全修飾名を希望lin.factory.AClass
しfactory.AClass
ます。