Andere Antworten richtig sind, aber vielleicht wird dies besser erklären:
def foo(bar, *args):
print('Bar is {bar}'.format(bar=bar))
print('args is {args}'.format(args=args))
foo(1, 2, 3, 4, 5)
# Output:
# Bar is 1
# args is (2, 3, 4, 5)
Das verwirrende Teil ist, dass Sie den Namen Ihrer Funktion __init__
und nannte den ersten Parameter self
. Diese Namen sind in Klassenkonstruktoren üblich, und wenn Sie einen Konstruktor (oder eine beliebige Methode für ein Objekt) aufrufen, gibt es einen zusätzlichen ersten Parameter, der auf das Objekt zeigt. So würde dieser Code tun, was Sie erwarten:
class Foo(object):
def __init__(self, *args):
print(args)
foo = Foo(1, 2, 3, 4, 5)
# Output:
# (1, 2, 3, 4, 5)
1 ging an 'self' seit' __init__' nicht eingeschaltet ist eine Klasse. – mgilson