Maison > développement back-end > Tutoriel Python > Comment résoudre les erreurs d'importation circulaire en Python : « ImportError : Impossible d'importer le nom X » et « AttributeError : ... en raison de l'importation circulaire » ?

Comment résoudre les erreurs d'importation circulaire en Python : « ImportError : Impossible d'importer le nom X » et « AttributeError : ... en raison de l'importation circulaire » ?

Linda Hamilton
Libérer: 2024-12-15 06:49:09
original
564 Les gens l'ont consulté

How to Solve Circular Import Errors in Python:

Résolution des problèmes d'importation circulaire : "ImportError : Impossible d'importer le nom X" et "AttributeError : ... en raison de l'importation circulaire"

Quand structurant le code sur plusieurs fichiers, il est courant de rencontrer des scénarios dans lesquels les modules dépendent les uns des autres. Cependant, lorsque ces dépendances forment des boucles circulaires, cela peut entraîner des erreurs liées à l'importation.

Comprendre les importations circulaires

Considérez l'exemple de code :

# main.py
from entity import Ent

# entity.py
from physics import Physics
class Ent:
    ...

# physics.py
from entity import Ent
class Physics:
    ...
Copier après la connexion

Dans cette configuration, main.py importe entités.py, qui à son tour importe physical.py. Cependant, physical.py importe également Entity.py, créant une dépendance circulaire. Lorsque vous essayez d'exécuter main.py, vous rencontrerez une ImportError indiquant qu'il ne peut pas importer le nom Ent.

Résoudre le problème

Pour résoudre ce problème, rompez le dépendance circulaire en supprimant l'importation d'entity.py de physical.py. Étant donné que la classe Physique ne nécessite pas d'accès à la classe Ent, il n'est pas nécessaire pour physical.py d'importerentity.py.

Code révisé

# main.py
from entity import Ent

# entity.py
class Ent:
    ...

# physics.py
class Physics:
    ...
Copier après la connexion

En éliminant la dépendance circulaire, le code peut désormais s'exécuter sans erreur. Il convient de noter que cette solution n’empêche pas le recours aux importations circulaires en général. Cependant, il est crucial de s'assurer que ces importations n'interfèrent pas avec le processus d'initialisation de la classe ou n'entraînent pas de dépendances au moment de l'importation.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal