Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python __init__ * argument [duplicate]

Tags:

python

init

So I'm pretty new to Python and there is this library I want to work with. However there is an argument in the constructor of the class which I can't find anything about.

init method looks like this:

def __init__(self, ain1, ain2, bin1, bin2, *, microsteps=16):

What does the * do? As far as I know the self is just the object itself and the others are just arguments. But what's the * ?

Link to the full class: check line 73

Thanks in advance

like image 848
rienvillage Avatar asked Jul 16 '26 07:07

rienvillage


1 Answers

In Python 3, adding * to a function's signature forces calling code to pass every argument defined after the asterisk as a keyword argument:

>> def foo(a, *, b):
..     print('a', a, 'b', b)

>> foo(1, 2)
TypeError: foo() takes 1 positional argument but 2 were given

>> foo(1, b=2)
a 1 b 2

In Python 2 this syntax is invalid.

like image 80
DeepSpace Avatar answered Jul 18 '26 21:07

DeepSpace