Python __init__ *参数

时间:2018-12-15 17:26:22

标签: python init

因此,我对Python还是一个新手,有一个我想使用的库。但是,该类的构造函数中有一个参数,我什么也找不到。

init 方法如下:

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

*是做什么的?据我所知,自我只是对象本身,而其他只是参数。但是*是什么?

链接到完整的课程: check line 73

预先感谢

2 个答案:

答案 0 :(得分:1)

在Python 3中,在函数的签名中添加*会强制调用代码将在星号之后定义的每个参数作为关键字参数传递:

>> 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

在Python 2中,此语法无效。

答案 1 :(得分:0)

*表示称为keyword arguments的东西。基本上,这意味着您必须在*之后指定参数的名称。例如,如果您具有以下方法:

def somemethod(arg1, *, arg2):
    pass

您可以这样称呼它:

somemethod(0, arg2=0)

但不是这样:

somemethod(0, 0)

使用*会强制用户指定哪些参数正在获取哪些值。