Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
locals:
{}
locals:
{'a': 'b', 'b': 100}
b
Traceback (most recent call last):
File "understanding_locals.py", line 16, in <module>
main()
File "understanding_locals.py", line 13, in main
print b
NameError: global name 'b' is not defined
Return the __dict__ attribute for a module, class, instance, or any other object with a __dict__ attribute.
Objects such as modules and instances have an updateable __dict__ attribute; however, other objects may have write restrictions on their __dict__ attributes (for example, new-style classes use a dictproxy to prevent direct dictionary updates).
Without an argument, vars() acts like locals(). Note, the locals dictionary is only useful for reads since updates to the locals dictionary are ignored.
.
Die selbe Warnung steht ziemlich groß und eigentlich unübersehbar auch nochmal in der Dokumentation zu "locals()".
Es geht also warum auch immer nicht. Wie könnte ich denn dann zum gewünschten Ergebnis kommen? Wenn es irgendwie besser geht, bin ich für jeden Vorschlag dankbar.
Was ist denn das eigentliche Problem, das du loesen willst? Ich hatte noch nie das Beduerfnis, lokale Variablen anzulegen - schliesslich braucht es dann auch code, der auf die Zugreift. Willst du den auch generieren?
Stattdessen nimmt man halt einfach direkt ein Dictionary, und speichert darin seine Daten.
Ok, ich versuche mit dem ConfigParser viele Variablen in eine Konfigurationsdatei zu speichern. Dazu möchte ich den Variablennamen automatisch zum Option-Namen machen. Das müsste man sonst per Hand für jede Variable machen. Natürlich soll das ganze bei Auslesen wieder automatisch passieren.
Python (Variablenname = Wert):
myarbtrvar = 100
zu:
Config-Inhalt (Option = Value):
myarbtrvar = 100
Wenn das mit getattr geht, dann freue ich mich über ein Beispiel, denn ich kann so nicht sehen, wie das funktionieren soll...
RedSharky hat geschrieben:Ist klar, nur wie macht man es sonst? Aus einem String soll ein Variablenname gemacht werden bzw. eine neue Variable angelegt werden.
Wozu soll daraus ein Variablenname gemacht werden? Hilft dir das?
RedSharky hat geschrieben:Ok, ich versuche mit dem ConfigParser viele Variablen in eine Konfigurationsdatei zu speichern. Dazu möchte ich den Variablennamen automatisch zum Option-Namen machen. Das müsste man sonst per Hand für jede Variable machen. Natürlich soll das ganze bei Auslesen wieder automatisch passieren.
Python (Variablenname = Wert):
myarbtrvar = 100
zu:
Config-Inhalt (Option = Value):
myarbtrvar = 100
Wenn das mit getattr geht, dann freue ich mich über ein Beispiel, denn ich kann so nicht sehen, wie das funktionieren soll...
Das ist der falsch Ansatz. Du willst nicht wirklich deinen Variablen-Raum automatisch mit Konfigurations-Variablen zumuellen.
Stattdessen solltest du zB ein Bunch-Rezept benutzen, um ein Dictionary (nichts anderes sind die Config-Objekte ja am Ende) zu einem Objekt zu machen, auf dessen Attribute du dann simpel zugreifen kannst: