vim*_*mal 3 python class init args
我试图让一些args在一个类中工作,我已经在一个函数中运行了如何在函数中使用*args?.
我正在尝试将该函数放入类中,但我似乎并不了解如何初始化具有带*args 的init函数的类.代码如下:
class classname(object):
def __init__(self, *args):
<code-snip>
...
</code-snip>
if __name__ == "__main__":
start = classname()
start()
Run Code Online (Sandbox Code Playgroud)
所以在这里我很困惑如何处理'start()'.我必须使用'start(*sys.argv [1:])'或'start()'.两者似乎都不起作用.我希望在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
Run Code Online (Sandbox Code Playgroud)
b)在使用start()时,我得到:
Traceback (most recent call last):
File "check.py", line 126, in <module>
start()
TypeError: 'check' object is not callable
Run Code Online (Sandbox Code Playgroud)
这些是出现的错误.
@alko,是的,你是对的.我正在研究如何在init中正确传递*args .
通过将参数传递给类构造函数来实例化对象.它们反过来又具有__init__
功能.在你的例子中,这将是
start = ClassName(*sys.argv[1:])
Run Code Online (Sandbox Code Playgroud)
该表达式按如下方式处理:
object.__new__(ClassName, *sys.argv[1:])
命名start
在当地的命名空间.从现在开始,start
可以在if __name__ == "__main__"
脚本中引用对象.start.__init__(*sys.argv[1:])
.请注意,args __init__
与传递给构造函数的方法相同.并阅读PEP 8的python命名约定.那是:
类名通常应使用CapWords约定.
归档时间: |
|
查看次数: |
3926 次 |
最近记录: |