Maison  >  Article  >  développement back-end  >  Pourquoi \"AttributeError : \'module\' object has no attribut [duplicata]\" se produit-il ?

Pourquoi \"AttributeError : \'module\' object has no attribut [duplicata]\" se produit-il ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-20 12:55:02726parcourir

Why does

"AttributeError : l'objet 'module' n'a pas d'attribut [dupliquer]" : Un guide complet

Cette erreur se produit lorsqu'un module Python tente pour accéder à un attribut qui n'existe pas. Dans votre cas spécifique, l'erreur est "AttributeError : l'objet 'module' n'a pas d'attribut 'hi'". Cette erreur indique que le module que vous importez (b.py) n'a pas de fonction nommée « hi ».

Comprendre les importations mutuelles de premier niveau

Le problème se pose parce que vous avez des importations mutuelles de premier niveau entre a.py et b.py. Ceci n'est généralement pas recommandé, car cela peut entraîner des importations circulaires et d'autres problèmes.

Résoudre le problème

Pour corriger cette erreur et éviter les importations mutuelles, vous pouvez importer les modules au sein des fonctions comme suit :

Dans b.py :

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

Dans a.py :

<code class="python">import b

def hello():
    print("hello")

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

De cette façon, a.py peut importer b.py en toute sécurité et appeler ses fonctions sans provoquer d'erreurs.

Optimisation de l'importation

Bien qu'il puisse sembler inefficace de importer dans une fonction, ce n'est en fait pas le cas. Python met en cache les modules importés, de sorte que l'opération d'importation n'est effectuée que la première fois que vous appelez la fonction. Les importations ultérieures sont une opération rapide.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn