Alternativenbehandlung

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
andrewas
User
Beiträge: 3
Registriert: Montag 31. Juli 2017, 15:26

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
__deets__
User
Beiträge: 14523
Registriert: Mittwoch 14. Oktober 2015, 14:29

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)
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@andrewas: wenn es sich wirklich um verschiedene Sprachen handelt, gibt es in der Standardbibliothek für Internationalization das gettext-Modul.
Antworten