20

这就是我要找的:

def __init__(self, *args):
  list_of_args = #magic
  Parent.__init__(self, list_of_args)

我需要将 *args 传递给单个数组,以便:

MyClass.__init__(a, b, c) == Parent.__init__([a, b, c])
4

3 回答 3

28

没什么太神奇的:

def __init__(self, *args):
  Parent.__init__(self, list(args))

在 内部__init__,变量args只是一个包含任何传入参数的元组。事实上,Parent.__init__(self, args)除非你真的需要它是一个列表,否则你可能只使用它。

作为旁注, usingsuper()优于Parent.__init__().

于 2013-03-18T23:51:38.410 回答
5

我在 senddex 教程中找到了一段代码来处理这个问题:

https://www.youtube.com/watch?v=zPp80YM2v7k&index=11&list=PLQVvvaa0QuDcOdF96TBtRtuQksErCEBYZ

尝试这个:

def test_args(*args):
    lists = [item for item in args]
    print lists

test_args('Sun','Rain','Storm','Wind')

结果:

['太阳','雨','风暴','风']

于 2017-07-29T09:09:54.843 回答
0

如果您正在寻找与@simon 的解决方案相同方向的东西,那么:

def test_args(*args): lists = [*args] print(lists) test_args([7],'eight',[[9]])

结果:

[[7],'八',[[9]]]

于 2019-11-01T11:50:14.600 回答