J'ai deux fichiers, node.py
y path.py
qui définissent deux classes, Node
y Path
respectivement.
Jusqu'à aujourd'hui, la définition de Path
a fait référence à la Node
et c'est pourquoi j'avais fait
from node.py import *
dans le path.py
archivo.
Cependant, j'ai créé aujourd'hui une nouvelle méthode pour les Node
qui fait référence à la Path
objet.
J'ai eu des problèmes en essayant d'importer path.py
: J'ai essayé, et lorsque le programme s'est exécuté et a appelé la fonction Path
qui utilise la méthode Node
une exception s'est levée à propos de Node
n'est pas définie.
Que dois-je faire ?
2 votes
Dupliquer ? stackoverflow.com/questions/744373/python-cyclic-imports
3 votes
Essayez-vous d'avoir une classe par fichier ? C'est la raison pour laquelle cela fonctionne rarement bien.
4 votes
D'accord avec S.Lott. Python n'est pas Java. Vous n'avez pas besoin d'une classe par fichier.
0 votes
effbot.org/zone/import-confusion.htm
76 votes
Quelques personnes ont dit "vous n'avez pas besoin d'une classe par fichier" et d'autres ont dit "n'essayez pas d'être Java". D'accord, mais ce n'est pas le sujet. Les définitions de classes peuvent devenir très volumineuses et le fait de les regrouper dans un même fichier peut donner lieu à un fichier très volumineux et illisible. Dans un programme sur lequel je travaille et qui comporte 8 classes dépendantes les unes des autres, dont chacune fait plusieurs centaines de lignes, je ne vois aucun avantage à les garder dans le même fichier et un avantage considérable à les garder séparées.
1 votes
Également à titre de référence, il semble que les importations circulaires soient autorisées sous Python 3.5 (et probablement au-delà) mais pas sous 3.4 (et probablement en dessous).
6 votes
Je n'ai pas pu voter suffisamment pour @sfkleach Comme si 1 000+ LOC dans un fichier multi-classes n'était pas assez difficile à lire ou à maintenir, le fichier de test (people faire de tests pour les classes Python, n'est-ce pas ? beaucoup plus long et un cauchemar pour la maintenance. Ce n'est pas parce que Python rend parfois difficile une bonne organisation qu'il faut renoncer à un code maintenable.