ich eine Python-Klasse mit einer Methode haben, die Argumente und Keyword-Argumente auf diese WeisePython-Funktion * args und ** kwargs zusammen mit anderen spezifischen Schlüsselwort Argumente
class plot:
def __init__(self, x, y):
self.x = x
self.y = y
def set_axis(self, *args, xlabel="x", ylabel="y", **kwargs):
for arg in args:
<do something>
for key in kwargs:
<do somethng else>
akzeptieren sollte beim Aufruf:
plt = plot(x, y)
plt.set_axis("test1", "test2", xlabel="new_x", my_kwarg="test3")
ich erhalte den Fehler: TypeError: set_axis() got multiple values for keyword argument 'xlabel'
wie auch immer, wenn ich wie
meine Methode gesetztclass plot:
def __init__(self, x, y):
self.x = x
self.y = y
def set_axis(self, xlabel="x", ylabel="y", *args, **kwargs):
for arg in args:
<do something>
for key in kwargs:
<do somethng else>
und rufen:
plt = plot(x, y)
plt.set_axis(xlabel="new_x", "test1", "test2", my_kwarg="test3")
ich SyntaxError: non-keyword arg after keyword arg
, wie ich erwartet hatte. Was ist falsch mit dem ersten Fall? Wie sollte ich meiner Methode mitteilen, ein beliebiges Benutzerargument und ein anderes Schlüsselwortargument als die Standardargumente zu akzeptieren? (Hoffe, meine Frage klar genug ist)
Welche Version von Python verwenden Sie? Die erste Klasse, die Sie auflisten, wird in Python 2.7.3 nicht analysiert, weil '* args' durch einen Parameternamen in der' set_axis' Definition gefolgt wird. – phant0m