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

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:

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

Was genau willst du tun?
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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:

Code: Alles auswählen

globals().update({"foo":"bar"})
Aber sei gewarnt, du willst das nicht tun. Wirklich nicht.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

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


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

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:

Ich vermute hier sowieso ein XY-Problem ...
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

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

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

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
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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

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: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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:

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 :(
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

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:
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

xml.dom.minidom ist wohl eines der abartigsten Dinge die die stdlib zu bieten hat, nimm ElementTree glaub mir du willst das wirklich.
Ps: Glaubt ihr ich erfinde gettext neu? :roll:
Was bietet deine Implementation was gettext nicht bietet (vorallem besser) bietet?
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

DasIch hat geschrieben:xml.dom.minidom ist wohl eines der abartigsten Dinge die die stdlib zu bieten hat, nimm ElementTree glaub mir du willst das wirklich.
Ich weiß, ich weiß, aber leider habe ich von ElementTree erst erfahren als es zu spät war (sprich der reader selbst war [fast] fertig und ich will nicht alles von Grund auf neu machen...)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

alexander255 hat geschrieben:Ps: Glaubt ihr ich erfinde gettext neu? :roll:
Nein, gettext ist bei all seinen Macken nicht halb so schlimm.

Warum:
  • getttext ist ein Standardformat, zwar kein sonderlich gutes, aber es ist populär, vor allem im Linux-Bereich und Python bietet ein Modul dafür
  • für gettext gibt es gute Software
  • die gettext-Integration in Python fühlt sich nicht an wie ein PHP-Designpattern
  • deine Lösung unterstützt keinerlei Plural. Weder einfachen Plural noch besondere Pluralarten, die einige Sprachen so haben
  • deine Lösung nutzt XML, was in dem Fall hauptsächlich überflüssig ist, keinen Vorteil bringt
  • deine Lösung nutzt DOM, was ebenso unnütz ist, insbesondere da es ElementTree in der Stdlib gibt
Zuletzt geändert von Leonidas am Montag 5. Januar 2009, 11:20, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

@Leonidas: Ich schiebe es mal auf die Uhrzeit aber Deine Liste ist auf den ersten Blick etwas verwirrend. Bei den Punkten, die mit `es …` beginnen ändert das `es` seine Bedeutung von "Dein Eigenbau" zu "gettext".
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ja, wird wohl die Uhrzeit daran schuld gewesen sein :oops: - ausgebessert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten