ホームページ  >  記事  >  バックエンド開発  >  循環参照を使用して相互インポートを試みたときに「AttributeError: Module Object Missing Attribute」を解決するにはどうすればよいですか?

循環参照を使用して相互インポートを試みたときに「AttributeError: Module Object Missing Attribute」を解決するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-20 12:38:30218ブラウズ

How to Resolve

AttributeError: Module Object Missing Attribute

相互参照を持つ 2 つのモジュールをインポートしようとすると、「AttributeError: '」というエラーが発生することがあります。モジュールのオブジェクトには属性 [重複] がありません。」これは、モジュール構造が相互に依存しており、循環参照が発生する場合によく発生します。

説明

提供されたコードでは、モジュール 'a.py' が試行します。 「b.py」をインポートし、「b.py」内に「a.py」のインポートがあります。これにより循環依存関係が作成され、Python で「AttributeError」が発生します。

解決策

この問題を解決するには、トップレベル モジュール内での相互インポートを避けてください。代わりに、必要に応じて関数を使用してモジュールをインポートします。

Python の例

前:

<code class="python"># a.py
import b

# b.py
import a</code>

後:

<code class="python"># a.py
def call_b():
  import b
  b.hi()

# b.py
def hi():
  print("hi")</code>

これにより、「a.py」はトップレベルで「b.py」をインポートしなくなり、循環依存関係が解消されます。

以上が循環参照を使用して相互インポートを試みたときに「AttributeError: Module Object Missing Attribute」を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。