Seite 1 von 1

Alternativenbehandlung

Verfasst: Dienstag 26. September 2017, 14:39
von andrewas
Hallo !
Ich bin am grübeln, wie das funktioniert.
Ich möchte z.B. eine Einstellungs-Datei oder Wert nutzen.
Je nach Einstellung soll die eine oder eine andere Funktion genutzt werden.

z.B. so :

Code: Alles auswählen

abfrage = ask_choice() # input
if abfrage == 1:
	print("hallo")
else:
	print("nicht hallo")
Das Beispiel ist trivial.

Wie wird das nun in grossen Projekten gemacht ?
z.B. mit zwei Sprachen.
Ich finde es keinen guten Stil, jedes Print in ein if einzulegen :

Code: Alles auswählen

sprache = ask_choice()
if sprache == "deutsch":
	print("Geh Wasser holen")
else:
	print("get water")
#
# weitere Berechnungen 
#
if sprache == "deutsch":
	print("genug Wasser")
else:
	print("enough water")
Gibt es dafür eine Abkürzung ?
Damit man nicht jedesmal erneut testen muss ?
Wie funktioniert das mit Sprachdateien ?
--
Das führt natürlich gleich zur nächsten Frage :
Wenn ich den Code jetzt umschreibe :

Code: Alles auswählen

sprache = ask_choice()
if sprache == "deutsch":
	wasserd()
else:
	wassere()

def wasserd():
	# Haufen Zeugs
	print("genug Wasser in Deutsch")

def wassere():
	# selbes Haufen Zeugs wie wasserd
	print("enough water english")
Hier muss ich ja jetzt den gleichen Code zweimal schreiben, was beim Warten recht umständlich ist. z.B. wenn sich nur in einer Berechnung etwas ändert, in der anderen aber nicht. Irgendwann verliert man den Überblick.
Ich denke, selbst wenn ich jetzt die Berechnung in eine Funktion auslagere, bei grösseren Projekten steige ich nicht mehr durch, sozusagen Goto und Gosub-Orgie :)

Hmm. Vielleicht Auslagerung in Include-Dateien ?

Vielleicht könnt Ihr mir eine Dokumentation zeigen, wo das alles drin steht.
Ich habe bisher noch nichts gefunden.

Danke Euch.
Andi

Re: Alternativenbehandlung

Verfasst: Dienstag 26. September 2017, 14:49
von __deets__
Das wuerde man zB Objektorientert loesen:

Code: Alles auswählen


class Deutsch(object):

     def wasser(self):
            ...

class Englisch(object):

     def wasser(self):
            ...
  
  
 def tuwas(ding):
       ...
       ding.wasser()
       ...
       
       
 def main():
       if  config_sagt_es_ist_deutsch():
            ding = Deutsch()
       else:
            ding = Englisch()
            
       tuwas(ding)

Re: Alternativenbehandlung

Verfasst: Dienstag 26. September 2017, 15:11
von Sirius3
@andrewas: wenn es sich wirklich um verschiedene Sprachen handelt, gibt es in der Standardbibliothek für Internationalization das gettext-Modul.