Ich habe eine Python-Funktion, die mehrere Argumente benötigt. Einige dieser Argumente könnten in manchen Szenarien weggelassen werden.
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
Die Argumente d
über h
sind Zeichenfolgen, die jeweils unterschiedliche Bedeutungen haben. Es ist wichtig, dass ich wählen kann, welche optionalen Parameter ich in beliebiger Kombination übergeben möchte. Zum Beispiel, (a, b, C, d, e)
, oder (a, b, C, g, h)
, oder (a, b, C, d, e, f
oder alle von ihnen (das sind meine Entscheidungen).
Es wäre toll, wenn ich die Funktion überladen könnte - aber ich habe gelesen, dass Python das Überladen nicht unterstützt. Ich habe versucht, einige der erforderlichen int-Argumente in die Liste einzufügen - und bekam einen Argument-Mismatch-Fehler.
Im Moment sende ich leere Zeichenfolgen anstelle der ersten paar fehlenden Argumente als Platzhalter. Ich möchte eine Funktion nur mit tatsächlichen Werten aufrufen können.
Gibt es eine Möglichkeit, dies zu tun? Kann ich eine Liste anstelle der Argumentliste übergeben?
Im Moment sieht der Prototyp mit ctypes etwa so aus:
_fdll.some_function.argtypes = [c_void_p, c_char_p, c_int, c_char_p, c_char_p, c_char_p, c_char_p, c_char_p]