我正在尝试让一些args在一个类中工作,我已经在How to use *args in a function?的函数中运行了它。
我试图让这个功能进入一个班级,但我似乎并不了解如何初始化那个具有 init 功能的类使用* args。代码如下:
class classname(object):
def __init__(self, *args):
<code-snip>
...
</code-snip>
if __name__ == "__main__":
start = classname()
start()
所以在这里我对如何处理&#39; start()&#39;感到困惑。我是否必须使用&#39; start(* sys.argv [1:])&#39;或者&#39; start()&#39;。两者似乎都不起作用。我希望正确传递 init 中预期的* args。
请指点。
非常感谢..
==
如果我不清楚详细说明它是如何工作的,我很抱歉。
a)使用start(* sys.argv [1:])
Traceback (most recent call last):
File "check.py", line 126, in <module>
start(*sys.argv[1:])
TypeError: 'check' object is not callable
b)使用start()时,我得到:
Traceback (most recent call last):
File "check.py", line 126, in <module>
start()
TypeError: 'check' object is not callable
这些是出现的错误。
@alko,是的,你是对的。我正在研究如何正确地传递 init 中的* args。
答案 0 :(得分:6)
通过将参数传递给class constructor来实例化对象。它们又被__init__
函数初始化。在你的例子中,这将是
start = ClassName(*sys.argv[1:])
该表达式按如下方式处理:
答案 1 :(得分:0)
您的示例包含一个首先实例化的类 - 包括调用__init__()
- 然后调用 - 这是通过调用__call__()
完成的。
因此,您的内容应放入调用start = classname(...)
,以便传递给__init__()
。
然而,对新实例化对象的调用将失败,除非它包含__call__()
方法。 如果您告诉我们
两者似乎都不起作用。
完全意味着。