2014-02-25 8 views
7

Ich versuche, einen Weg zu finden, Modul-Variable nach Namen zugreifen, aber noch nichts gefunden. Das, was ich benutze jetzt:Python get Modulvariable nach Name

var = eval('myModule.%s' % (variableName)) 

aber es ist unscharf und bricht IDE Fehlerprüfung (das heißt in Eclipse/pydev Import MyModule wird als ungenutzt markiert, während es für die obige Zeile gebraucht wird). Gibt es einen besseren Weg? Möglicherweise ein Modul eingebaute Funktion, die ich nicht kenne?

+2

Verwenden Sie "getattr" .. –

+0

@AshwiniChaudhary Wenn Sie einen Beispielcode angeben, akzeptiere ich diese Antwort. Es gibt wirklich kein solches Beispiel, das ich im Internet finden könnte. – ducin

Antwort

17
import mymodule 

var = getattr(mymodule, variablename) 
3

getattr(themodule, "attribute_name", None)

Das dritte Argument ist der Standardwert, wenn das Attribut nicht existiert.

Von https://docs.python.org/2/library/functions.html#getattr

Rückkehr der Wert des benannten Attributs des Objekts. name muss eine Zeichenfolge sein. Wenn die Zeichenfolge der Name eines der Attribute des Objekts ist, ist das Ergebnis der Wert dieses Attributs. Zum Beispiel entspricht getattr (x, 'foobar') x.foobar. Wenn das benannte Attribut nicht vorhanden ist, wird der Standardwert zurückgegeben, sofern dies angegeben ist, andernfalls wird AttributeError ausgelöst.