2010-10-21 4 views
0

je le morceau de code suivant:Comment passer l'objet à une fonction dans ce scénario

NameX.functionA(functionB(Dictionary["___"])) 

Au lieu de _ Je voudrais faire une référence à NomX sous la forme d'une chaîne, donc que le programme l'interprète comme

NameX.functionA(functionB(Dictionary["NameX"])) 

Comment est-ce que je peux faire ceci? J'ai essayé d'utiliser str (self), mais c'est clairement faux.

Merci

+0

Dans son état actuel, ceci est maintenant responsable. Qu'est-ce que "NameX", c'est-à-dire pourquoi "NameX" et non "quux"? – delnan

Répondre

3

Est-NameX.__name__ peut-être ce que vous voulez?

+0

Oui, c'est le cas. Merci. – relima

1

Vous pouvez utiliser

Name.__name__ 

sur un objet uninitialized et

Name.__class__.__name__ 

sur un initialisé objet.

0

mais il fonctionne Abusive:

>>> def getvarname(var): 
    d = globals() 
    for n in d: 
     if d[n] is var: 
      return n 
    return None 

>>> class NameX: pass 

>>> getvarname(NameX) 
'NameX' 

Travaux sur des choses qui ne sont pas seulement les classes, aussi:

>>> inst1 = NameX() 
>>> getvarname(inst1) 
'inst1' 

Vous pourriez être tourné si cela finit dans le code réel, cependant.

Questions connexes