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

时间:2019-03-08 04:42:11

标签: python args

我需要一个Python方法来访问自己的实例变量,并且还可以接受任意数量的参数。我基本上想要一个可以通过

调用的方法foo
foo(a, b, c)

foo()

在课堂上,我认为构造函数将是

def foo(self, *args):

这是正确的吗?另外,Fyi,我是Python的新手(如果您无法分辨)。

3 个答案:

答案 0 :(得分:1)

def foo(self, *args):

是的,这是正确的。

答案 1 :(得分:1)

您只需要在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**kwargs

示例

>>> o = YourClass()
>>> o.foo()
()
>>> o.foo(1)
(1,)
>>> o.foo(1, 2)
(1, 2)

答案 2 :(得分:1)

您正确声明了该方法。您还可以使用双星号来接受关键字参数。 Reference: Expressions

  

双星号**表示字典解包。其操作数必须是映射。每个映射项都添加到新词典中。较新的值将替换较早的键/基准对和较早的字典解包已设置的值。

     

....

     

星号*表示可重复拆包。它的操作数必须是可迭代的。可迭代对象被扩展为一系列项目,这些项目包含在拆包现场的新元组,列表或集合中。

Args将是一个元组。要访问这些值,您必须迭代或使用位置参数,即:args [0]