【问题标题】:Python __init__ * argument [duplicate]Python __init__ * 参数 [重复]
【发布时间】:2018-12-15 17:26:22
【问题描述】:

所以我对 Python 还是很陌生,我想使用这个库。但是,类的构造函数中有一个参数,我找不到任何关于它的内容。

init 方法如下所示:

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

* 有什么作用?据我所知,自我只是对象本身,其他只是论点。但是 * 是什么?

完整课程链接: check line 73

提前致谢

【问题讨论】:

    标签: python init


    【解决方案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 中,此语法无效。

    【讨论】:

      【解决方案2】:

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

      def somemethod(arg1, *, arg2):
          pass
      

      你可以这样称呼它:

      somemethod(0, arg2=0)
      

      但不是这样:

      somemethod(0, 0)
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-28
        • 2022-12-16
        • 1970-01-01
        • 2011-01-11
        • 1970-01-01
        • 2011-07-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多