2017-05-27 3 views
-1

Je veux utiliser une classe en Python pour simuler une « struct » en C++. Aussi, j'en ai besoin sous forme globale car je l'utilise dans de nombreuses fonctions et je ne veux pas passer de paramètres.Comment puis-je créer une variable de classe mondiale en Python

Comment puis-je faire cela (créer des objets globaux d'une classe).

Ma tentative a été:

class MyClass(): 
//Class Constuctor 

global ob1 = Myclass() 

def func1(): 
    ob1.name = "Hello World" 

def func2(): 
    print(ob1.name) 

func1() 
func2() 

Cela me donne une erreur « Syntaxe invalide », comment ai-je mal tourné, ou est-il une méthode plus efficace pour le faire? Notez que j'ai comme 10 valeurs, donc la classe va être une douleur de toute façon.

+0

Votre code n'est pas valide, donc nous ne pouvons pas reproduire l'erreur de syntaxe. S'il vous plaît poster un [mcve]. Aussi, je déconseille les globals. Il est difficile de raisonner sur votre code, les dépendances ne sont pas explicites, et la séparation des préoccupations est facile à violer. Cela conduira à un code mal structuré à moins que vous soyez très discipliné et que vous sachiez ce que vous faites (ce que je ne pense pas que je tenterais). Il est également plus difficile à tester car l'état entre les tests peut changer. –

Répondre

1

Dans votre code, il est nécessaire de ne pas placer explicitement le modificateur global, cette variable est globale par défaut.

class MyClass(): 
    def __init__(self): 
     self.name = "" 

ob1 = MyClass() 

def func1(): 
    ob1.name = "Hello World" 

def func2(): 
    print(ob1.name) 

func1() 
func2() 

Sortie:

Hello World 

En outre, l'utilisation des systèmes mondiaux est la suivante:

global variable 

variable = your_value 
+0

'ob1' est un global dans votre code. '' ob1 'dans globals() 'est' True' –

+1

Vous avez raison, ce que je voulais dire c'est qu'il n'est pas nécessaire d'utiliser le modificateur global dans le code. – eyllanesc

+0

D'accord, je vois la distinction maintenant. –