Ich habe heute mal eines meiner Pythonprojekte erweitert und bin dabei auf das Problem gestoßen, dass Python keinen Switch-Befehl hat.
Ehe ich nun endlose if-then-else Kette aufbaue, hab ich mal etwas gesucht und abgeleitet:
Ich möchte abhängig von einem übergebenen "Schlüssel" eine bestimmte Methode aufrufen.
Das Ganze läuft über sog. "bound methods" in einem Dictionary:
==> printOut ist die Methode, wo es passiert..
(Das unten stehende ist ein Ausschnitt aus einer größeren Klasse, interessant an der Stelle ist die Auswahl der aufzurufenden Logging-Methode anhand eines übergebenen Wertes)
Python
# -------------------------
def dropTable(self, tableName=None):
assert (tableName is not None), "Error: tablename is mandatory"
con = None
try:
con = sqlite3.connect(self.dbname)
con.execute("drop table if exists " + tableName)
self.printOut("ok: drop table", logging.DEBUG)
except sqlite3.Error as e:
self.printOut("Error {}:".format(e.args[0]), logging.ERROR)
finally:
con.close()
# -------------------------
def printOut(self, mesg, lvl=logging.INFO):
if self.log is not None:
cmds = {
logging.INFO: self.log.info,
logging.WARNING: self.log.warning,
logging.DEBUG: self.log.debug,
logging.ERROR: self.log.error,
logging.CRITICAL: self.log.critical,
}
cmds[lvl](mesg)
else:
print(mesg)
Alles anzeigen
Vielleicht ist das für die meisten von euch "kalter" Kaffee, aber ich wollte euch das mal zeigen