Ich habe eine Python-Funktion, die mehrere Argumente akzeptiert. Einige dieser Argumente könnten in einigen Szenarien weggelassen werden.
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
Die Argumente d
durch h
sind Strings , die jeweils unterschiedliche Bedeutungen haben. Es ist wichtig, dass ich auswählen kann, welche optionalen Parameter in einer beliebigen Kombination übergeben werden sollen. Zum Beispiel, (a, b, C, d, e)
oder (a, b, C, g, h)
, oder (a, b, C, d, e, f
oder alle (dies sind meine Entscheidungen).
Es wäre großartig, 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 habe einen Fehler bei der Nichtübereinstimmung der Argumente erhalten.
Im Moment sende ich leere Zeichenfolgen anstelle der ersten 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? Könnte ich eine Liste anstelle der Argumentliste übergeben?
Im Moment sieht der Prototyp mit ctypes ungefähr 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]