Heim  >  Artikel  >  Backend-Entwicklung  >  Warum tritt \"AttributeError: \'module\' object has no attribute [duplicate]\" auf?

Warum tritt \"AttributeError: \'module\' object has no attribute [duplicate]\" auf?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-20 12:55:02726Durchsuche

Why does

"AttributeError: 'module' object has no attribute [duplicate]": Eine umfassende Anleitung

Dieser Fehler tritt auf, wenn ein Python-Modul versucht um auf ein Attribut zuzugreifen, das nicht existiert. In Ihrem speziellen Fall lautet der Fehler „AttributeError: ‚module‘ object has no attribute ‚hi‘“. Dieser Fehler weist darauf hin, dass das Modul, das Sie importieren (b.py), keine Funktion mit dem Namen „hi“ hat.

Grundlegendes zu gegenseitigen Importen auf oberster Ebene

Das Problem entsteht, weil zwischen a.py und b.py gegenseitige Importe auf oberster Ebene vorliegen. Dies wird im Allgemeinen nicht empfohlen, da es zu zirkulären Importen und anderen Problemen führen kann.

Lösung des Problems

Um diesen Fehler zu beheben und gegenseitige Importe zu vermeiden, können Sie importieren Die darin enthaltenen Module funktionieren wie folgt:

In b.py:

<code class="python">def cause_a_to_do_something():
    import a
    a.do_something()</code>

In a.py:

<code class="python">import b

def hello():
    print("hello")

print("a.py")
print(hello())
b.cause_a_to_do_something()</code>

Auf diese Weise kann a.py b.py sicher importieren und seine Funktionen aufrufen, ohne Fehler zu verursachen.

Importoptimierung

Auch wenn dies möglicherweise ineffizient erscheint import innerhalb einer Funktion ist dies eigentlich nicht der Fall. Python speichert importierte Module zwischen, sodass der Importvorgang nur beim ersten Aufruf der Funktion ausgeführt wird. Nachfolgende Importe sind ein schneller Vorgang.

Das obige ist der detaillierte Inhalt vonWarum tritt \"AttributeError: \'module\' object has no attribute [duplicate]\" auf?. 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