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 » ?
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: ...
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: ...
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!