ich möchte erreichen, mehrere alternative Einstellungspresets zu definieren und ein bestimmtes Preset mittels Zuweisung zu selektieren. Im restlichen Programm soll dann mit generischen Bezeichnern gearbeitet werden können, die je nach ausgewählter Einstellung verschiedene Werte annehmen.
Einfaches Beispiel:
Code: Alles auswählen
LAYOUT_BORING = {
"TEXTBOX_PREFIX": "# ",
"TEXTBOX_HEADING": "# " + "=" * 80,
"TEXTBOX_INDENT": " "
}
LAYOUT_FANCY = {
"TEXTBOX_PREFIX": "| ",
"TEXTBOX_HEADING": "| " + "=" * 80,
"TEXTBOX_INDENT": " "
}
LAYOUT = LAYOUT_FANCY
print(LAYOUT["TEXTBOX_HEADING"])
print(LAYOUT["TEXTBOX_PREFIX"] + "Items:")
print(LAYOUT["TEXTBOX_PREFIX"] + LAYOUT["TEXTBOX_INDENT"] + "Item 1")
Code: Alles auswählen
class NestedDict(dict):
def __getitem__(self, item):
return dict.__getitem__(self, item) % self
LAYOUT_BORING = NestedDict({
"TEXTBOX_PREFIX" : "# ",
"TEXTBOX_HEADING" : "%(TEXTBOX_PREFIX)s" + "=" * 80,
"TEXTBOX_INDENT" : " "
})
LAYOUT_FANCY = NestedDict({
"TEXTBOX_PREFIX": "| ",
"TEXTBOX_HEADING": "%(TEXTBOX_PREFIX)s" + "=" * 80,
"TEXTBOX_INDENT": " "
})
LAYOUT = LAYOUT_FANCY
print(...)
Code: Alles auswählen
globals().update(LAYOUT)
print(TEXTBOX_HEADING)
print(TEXTBOX_PREFIX + "Items:")
print(TEXTBOX_PREFIX + TEXTBOX_INDENT + "Item 1")
(und falls jemand von euch eine Idee hat, wie ich mein ursprüngliches Problem mit den Presets schöner und eleganter lösen kann, bin ich auch für Vorschläge offen.)