2010-10-19 21 views
0

Je sais utiliser les variables globales lorsqu'elles sont définies dans une classe, mais j'ai une variable globale dans une main.
Si je veux l'utiliser dans une classe, quelle serait l'importation pour y accéder?Problèmes d'accès à une variable globale

Mon principal est quelque chose comme ça

Main.py:

from EvolutionaryAlgorithm import EvolutionaryAlgorithm 
initialTimeMain = 0 

if __name__ == '__main__': 
    evolutionaryAlgorithm= EvolutionaryAlgorithm() 
. 
. 

et ma classe EvolutionaryAlgorithm a une méthode qui utilise la variable initialTimeMain. le problème est quand j'ajoute cette importation dans le EvolutionaryAlgorithm:

EvolutionaryAlgorithm.py

import Main 

parce que quand je lance le script, une erreur apparaît

from EvolutionaryAlgorithm import EvolutionaryAlgorithm ImportError: cannot import name EvolutionaryAlgorithm

l'importation n'est pas reconnu plus

+0

Qu'avez-vous essayé? Quelles importations avez-vous essayé et quels ont été les résultats? La question en elle-même n'est pas stupide. Mais s'il vous plaît, s'il vous plaît, essayez quelque chose et affichez le code que vous avez essayé avant de le demander. –

Répondre

3

Vous avez un cas d'importations circulaires, la solution à court terme est de déplacer l'instruction import dans la clause if:

initialTimeMain = 0 

if __name__ == '__main__': 
    from EvolutionaryAlgorithm import EvolutionaryAlgorithm 
    evolutionaryAlgorithm= EvolutionaryAlgorithm() 

Une meilleure solution à long terme serait de remanier votre code afin que vous n'avez pas les importations circulaires ou initialTimeMain est définie dans le EvolutionaryAlgorithm.py, ce qui bien sûr serait disponible en Main.py avec votre stratégie d'importation existante .

ancienne réponse:

a.py: 

globalvar = 1 
print(globalvar)    # prints 1 
if __name__ == '__main__': 
    print(globalvar)   # prints 1 

b.py: 

import a 
print(a.globalvar)   # prints 1 
+0

mais quand j'importe le Main je ne peux pas exécuter le code – Federico

+1

@Federico: import main? Que voulez-vous dire? – SilentGhost

+0

@Federico: Veuillez mettre à jour votre question avec le code qui ne fonctionne pas. Et s'il vous plaît soyez très, très clair sur "ne peut pas exécuter le code". Qu'est-ce que ça veut dire? –