代码之家  ›  专栏  ›  技术社区  ›  Intrastellar Explorer

如何在Python构造函数中使用*args和self

  •  -2
  • Intrastellar Explorer  · 技术社区  · 7 年前

    我需要一个Python方法来访问self作为实例变量,并且能够接受任意数量的参数。我基本上想要一个方法foo,可以通过

    foo(a, b, c)
    

    foo()
    

    在类中,我认为构造函数是

    def foo(self, *args):
    

    这是正确的吗?另外,仅供参考,我是Python新手(如果你不知道的话)。

    3 回复  |  直到 7 年前
        1
  •  1
  •   Community Mohan Dere    6 年前

    您只需在 self 参数:

    class YourClass:
        def foo(self, *args):
            print(args)
        def bar(self, *args, **kwargs):
            print(args)
            print(kwargs)
        def baz(self, **kwargs):
            print(kwargs)
    

    我还添加了一个方法,其中您还添加了 **kwargs ,以及将两者相加的情况 *args 和 **夸尔斯 .

    例子

    >>> o = YourClass()
    >>> o.foo()
    ()
    >>> o.foo(1)
    (1,)
    >>> o.foo(1, 2)
    (1, 2)
    
        2
  •  1
  •   John Kugelman    7 年前
    def foo(self, *args):
    

    是的,没错。

        3
  •  1
  •   Community Mohan Dere    6 年前

    Reference: Expressions

    ....

    星号*表示可拆箱。它的操作数必须是iterable。iterable被扩展为一系列项,这些项包含在解包站点的新元组、列表或集合中。