Programmkonfiguration Best Practices

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.
Antworten
sfx2k
User
Beiträge: 54
Registriert: Dienstag 2. September 2014, 13:29

Hallo zusammen,

bisher habe ich es bei meinen Skripten so gehandhabt, dass ich Konfigurationselemente in ein globales Dictionary meines Scriptes gepackt habe und dann in jeder Funktion meines Scriptes darauf zugreifen kann.
Jetzt wollte ich es mal mit einer Konfigurationsdatei probieren und habe gemerkt, dass das einfacher gedacht war, als ich es in der Lage bin, umzusetzen.

Ich habe natürlich viele Beispiele gefunden, wie ich meine Infos in json, yaml und ini-Dateien ablegen und auch einlesen kann. Allerdings immer nur in Scripten, die aus einer einzigen Funktion bestehen.
Wie aber kann ich diese Informationen über mehrere Funktionen meines Scriptes (oder auch über mehrere Dateien) hinweg nutzen, ohne eine globale Variable zu nutzen, ohne die Datei immer wieder neu einzulesen und ohne die Config per Argument immer weiter zu reichen? Oder denke ich da falsch und ohne irgendetwas 'globales' geht es gar nicht?

Wie macht man das pythonic?

Danke und Gruß
Benutzeravatar
__blackjack__
User
Beiträge: 14055
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@sfx2k: Das lässt sich nicht so einfach beantworten. Am besten schaut man erst einmal was denn davon tatsächlich überall verfügbar sein muss, also ob man wirklich die gesamte Konfiguration überall herumreichen muss. Alles was dann übrig bleibt was letztlich so etwas wie ”anpassbare Konstanten” sind, kann man dann "global" verfügbar machen. Aber das eventuell auch über eine cachende Funktion oder ein Singleton, damit man da noch eingreifen könnte.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
sfx2k
User
Beiträge: 54
Registriert: Dienstag 2. September 2014, 13:29

Hallo blackjack,
__blackjack__ hat geschrieben: Mittwoch 17. März 2021, 09:40 @sfx2k: Das lässt sich nicht so einfach beantworten. Am besten schaut man erst einmal was denn davon tatsächlich überall verfügbar sein muss, also ob man wirklich die gesamte Konfiguration überall herumreichen muss. Alles was dann übrig bleibt was letztlich so etwas wie ”anpassbare Konstanten” sind, kann man dann "global" verfügbar machen. Aber das eventuell auch über eine cachende Funktion oder ein Singleton, damit man da noch eingreifen könnte.
also lag ich gar nicht so falsch mit meiner Annahme, dass es nicht so einfach ist und ggf. doch etwas globales her muss.
Danke Dir.

Gruß
Antworten