Heim >Backend-Entwicklung >Python-Tutorial >Wie vermeide ich AttributeError in Szenarios zum gegenseitigen Import in Python?

Wie vermeide ich AttributeError in Szenarios zum gegenseitigen Import in Python?

Barbara Streisand
Barbara StreisandOriginal
2024-10-20 13:06:30238Durchsuche

How to Avoid AttributeError in Mutual Import Scenarios in Python?

AttributeError: 'module' Object Fehls Attribute in Mutual Import Scenario

In Python tritt ein häufiger Fehler auf, wenn gegenseitige Importe zwischen Modulen verarbeitet werden. Betrachten Sie das folgende Beispiel:

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

# Functions defined within a.py...

# b.py
import a

# Functions defined within b.py...</code>

Beim Ausführen von a.py kann der folgende Fehler auftreten:

AttributeError: 'module' object has no attribute 'hi'

Dieser Fehler weist darauf hin, dass a.py nicht auf das Attribut hi zugreifen kann das importierte b.py-Modul. Um den Grund für diesen Fehler zu verstehen, ist es wichtig, die Fallstricke gegenseitiger Importe auf oberster Ebene zu erkennen.

Normalerweise wird von gegenseitigen Importen abgeraten, da sie zu zirkulären Abhängigkeiten führen und den Code weniger wartbar machen können. Stattdessen empfiehlt Python, Module innerhalb von Funktionen zu importieren. Im gegebenen Beispiel kann das Problem gelöst werden, indem sowohl a.py als auch b.py wie folgt geändert werden:

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

# Functions defined within a.py...

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

Wenn a.py nun ausgeführt wird, wird b.py nahtlos importiert und aufgerufen die Funktion „hi“ innerhalb der Funktion „import_b_and_call_hi“. Diese Technik stellt sicher, dass gegenseitige Importe keine Abhängigkeitsprobleme verursachen.

Das obige ist der detaillierte Inhalt vonWie vermeide ich AttributeError in Szenarios zum gegenseitigen Import in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn