Aufbauend auf @ ThiefMaster Kommentar über **kwargs
:
Wenn Sie in 20 Argumente nehmen, könnte es mehr Sinn machen, Ihre Benutzer benötigen Argumente über Schlüsselwort zu schicken statt Position: mit 20 Argumenten, ist es ein anständiges Chance, dass jemand, der Ihren Code verwendet, die Argumente in der falschen Reihenfolge erhält.
Betrachten Sie nur akzeptieren Kwargen mit einer vordefinierten Liste von Schlüsseln, die Sie akzeptieren möchten und einen ValueError, wenn Sie sie nicht erhalten. So könnten Sie **kwargs
verwenden und dann überprüfen, ob alles da ist. Z.B.
INITIAL_ARGS = set(['a','b','c','d','e'...])
def __init__(self, **kwargs):
if not INITIAL_ARGS.issubset(set(kwargs.iterkeys())):
raise ValueError("Class <myclass> requires 20 keyword arguments"
"only given %d" % len(kwargs))
self.__dict__.update(kwargs)
Nicht sicher, ob dies mehr oder weniger Pythonic als die ursprüngliche, aber es scheint, wie es eine Menge Zeit sparen würde später, wenn sie versuchen, herauszufinden, warum jemand Ihren Code seltsame Fehler bekommen könnte.
Könnte vorsichtig über das Selbst Argument sein wollen, sieht aber sonst OK – lxop
Ist die Anzahl der Eingänge zu ändern, oder gibt es eine festgelegte Anzahl? – HodofHod
Danke Ixop, Die Anzahl der Eingaben wird nicht geändert. –