2010-05-04 6 views
0

J'essaie de passer une variable d'une fonction à une classe. Exemple de code est ci-dessous:Comment passer une variable d'une fonction à une classe python

def hello(var): 

    return var 

class test(): 
    def __init__(self): 
     pass 

    def value(self): 
     print var 

hello(var) 
test = test() 
test.value() 

Je voudrais passer var dans la classe test().

Merci pour toute aide.

+0

Essayez-vous de faire quelque chose de similaire à: http://stackoverflow.com/questions/2040998/how-to-change-variables-in-python? – MikeyB

Répondre

6

Vous devez modifier votre classe comme ceci:

class test(): 
    def __init__(self, var): 
     self.var = var 

    def value(self): 
     print self.var 

test_inst = test(var) 
test_inst.value() 

En outre, vous ne pouvez pas utiliser le même nom exact de se référer à la fois instance de classe et une classe elle-même.

+0

@SilentGhost - J'ai utilisé ce code, mais j'ai eu l'erreur - retraçage (le plus récent appel dernier): Fichier "function_pass.py", ligne 41, dans test_inst = test() TypeError: __init __() prend exactement 2 arguments (1 donné) – chrissygormley

+0

@chriss: Je n'ai pas suggéré d'utiliser 'test()', j'ai suggéré d'utiliser 'test (var)' – SilentGhost

+0

Cela dit que global 'var' n'est pas défini quand je fais ça . – chrissygormley

0
class test(): 
    def __init__(self, var): 
     self._var = var 

    def value(self): 
     print self._var 
0

Ajoutez l'instruction:

global var 

à votre code:

>>> global var 
>>> def hello(): 
     print var 

>>> class test(): 
     def __init__(self): 
      pass 

     def value(self): 
      print var 

>>> var = 15 
>>> hello() 
15 
>>> test().value() 
15 

Cue disclaimer standard en ce qui concerne les variables globales sont mauvaises ... mais comment vous le faites.

+0

c'est complètement inutile. – SilentGhost

+0

Oui, totalement inutile, mais compte tenu de son code, c'est ce que je * pense * il demandait. – MikeyB

0

Je pense que vous pouvez appeler bonjour la fonction dans la classe.

def hello (var): 
    return var 

class test(): 
    def __init__(self): 
     pass 

    def value(self): 
     var = hello(5) 
     print var 

test = test() 
test.value() 
Questions connexes