Dynamischem Variablennamen einen Wert zuweisen

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.
Benutzeravatar
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

Dynamischem Variablennamen einen Wert zuweisen

Beitragvon alexander255 » Sonntag 4. Januar 2009, 18:15

Hallo,

Ich weiß nicht vielleicht eine Einsteiger? Egal...
Wie kann man (dynamische) Elemente aus einem Dict nach dem
dictschlüssel = dictwert
lokal in ein Modul einfügen?

HAA Alexander :?:
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Beitragvon nkoehring » Sonntag 4. Januar 2009, 18:19

Sorry, ich wuerde dir gern weiterhelfen, aber kann mit deiner Fragestellung nicht so richtig was anfangen.

Was genau willst du tun?
DasIch
User
Beiträge: 2402
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Sonntag 4. Januar 2009, 18:19

Das ist i.d.R. eine ganz schlechte Idee. Wieso willst du dass überhaupt machen?
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Sonntag 4. Januar 2009, 18:22

Code: Alles auswählen

globals().update({"foo":"bar"})

Aber sei gewarnt, du willst das nicht tun. Wirklich nicht.
My Website - 29a.ch
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

Beitragvon alexander255 » Sonntag 4. Januar 2009, 18:34

Aber sei gewarnt, du willst das nicht tun. Wirklich nicht.


Warum nicht?


Ps: Soll ich's mit locals machen? ;)
DasIch
User
Beiträge: 2402
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Sonntag 4. Januar 2009, 18:39

Der Code wird sehr schwierig zu verstehen bis nicht mehr nachvollziehbar, wenn man dass unnötigerweise einsetzt. Wenn du schreibst wofür du dass brauchst fällt vielleicht jemandem eine bessere Lösung ein.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Beitragvon nkoehring » Sonntag 4. Januar 2009, 19:05

Ich vermute hier sowieso ein XY-Problem ...
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Beitragvon Darii » Sonntag 4. Januar 2009, 19:20

Wusste gar nicht, dass es dafür einen Namen gibt ^^
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Beitragvon audax » Sonntag 4. Januar 2009, 19:28

alexander255 hat geschrieben:
Aber sei gewarnt, du willst das nicht tun. Wirklich nicht.


Warum nicht?


Ps: Soll ich's mit locals machen? ;)

mit locals geht das so nicht, siehe Doku.
Benutzeravatar
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

Beitragvon alexander255 » Sonntag 4. Januar 2009, 19:35

audax hat geschrieben:
alexander255 hat geschrieben:
Aber sei gewarnt, du willst das nicht tun. Wirklich nicht.


Warum nicht?


Ps: Soll ich's mit locals machen? ;)

mit locals geht das so nicht, siehe Doku.

:oops: stimmt das würde nicht sehr gut funktionieren
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Sonntag 4. Januar 2009, 19:42

Wenn du uns in deinen Plan einweihen würdest, könnten wir dir Vorschläge machen, wie du das besser löst ;)
Benutzeravatar
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

Beitragvon alexander255 » Sonntag 4. Januar 2009, 20:14

Ein Sprachen backend mit Baumstruktur

Code: Alles auswählen

import lang
lang.parse(name, [tools.path.abspath('lang', __name__)])

und dann die strings über lang.[...] aufrufen zB: lang.toolbar.add

Ps: Danke für den update Tipp (seit heute unterstützt das System L10N...:))
DasIch
User
Beiträge: 2402
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Sonntag 4. Januar 2009, 20:29

Sorry aber dass ist imho die dümmste Idee wie man soetwas realisieren kann die ich je gesehen habe. Statt das Rad nach dem Motto "Hauptsache rund" neuzuerfinden wäre es sinnvoller etwas bestehendes wie z.B. Babel zu nutzen.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Beitragvon nkoehring » Montag 5. Januar 2009, 00:08

Darii hat geschrieben:Wusste gar nicht, dass es dafür einen Namen gibt ^^
Ich habe das auch erst erfahren, als es mir in nem IRC wurde vorgehalten wurde :roll:

Ich hab immer noch nicht verstanden, was der gute Thread-Schreiber eigentlich bezwecken will :(
Benutzeravatar
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

Beitragvon alexander255 » Montag 5. Januar 2009, 00:30

Ich glaube ich sollte mich einmal klar ausdrücken:

Die eigentlichen Sprachstrings stehen in einer XML Datei
Beispiel lang/pycast/de.xlf:

Code: Alles auswählen

<language>
   <group name="tray">
      <value name="tip"></value>
      <value name="Busy">Arbeitet...</value>
      <value name="Tray"></value>
      <group name="menu">
         <value name="show">&Anzeigen</value>
         <value name="showTip">Das Fenster Anzeigen</value>
         <value name="hide">&Verstecken</value>
         <value name="hideTip">Das Fenster Ausblende</value>
      </group>
   </group>
   [b]...[/b]
</language>

und diese Strukturen werden mithilfe [mod]xml.dom.minidom[/mod] in meinem [mod]lang[/mod] eingelesen und stehen dann in Python zur verfügung:

Code: Alles auswählen

>>> import lang
>>> lang.parse(name, [tools.path.abspath('lang', __name__)])
>>> lang.tray.menu
{'show': '&Anzeigen', 'showTip': 'Das Fenster Anzeigen', 'hide': '&Verstecken', 'hideTip': 'Das Fenster Ausblenden'}
>>> lang.tray.menu.show
'&Anzeigen'

Ich hoffe die Beispiele konnten den Sinn (oder unsinn) besser Darstellen

Ps: Glaubt ihr ich erfinde gettext neu? :roll:

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder