Vorsicht vor den Details. Der Backslash ( \ ), den du in deinem Topic-Titel verwendest ist etwas anderes als der Slash ( / ) der tatsächlich im Code auftaucht.
Ich denke auch nicht, dass der Code, den du hier präsentierst tatsächlich richtig ist.
Das steht exakt so in deinem Lehrbuch? Mit dem class Keyword vorweg?!
Es gibt zwei "special characters" in Parameterlisten von Funktionen/Methoden (und das kann auch die __init__-Methode einer Klasse sein):
/: Links davon stehen "positional arguments" (diese können nicht über den Namen übergeben werden) und rechts "positional arguments" oder "keyword arguments".
*: Links stehen "positional arguments" oder "keyword arguments" und rechts nur "keyword arguments" (diese können ausschließlich über ihren Namen übergeben werden).
Code: Alles auswählen
>>> def slash(a, /, b):
... print(a, b)
...
>>> slash(1, 2)
1 2
>>> slash(1, b=2)
1 2
>>> slash(a=1, b=2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: slash() got some positional-only arguments passed as keyword arguments: 'a'
>>> def asterisk(a, *, b):
... print(a, b)
...
>>> asterisk(1, b=2)
1 2
>>> asterisk(a=1, b=2)
1 2
>>> asterisk(1, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: asterisk() takes 1 positional argument but 2 were given
>>>