我正在尝试解决这段代码中无法解决的问题:
#!/usr/bin/python
import cmd
class My_class (cmd.Cmd):
"""docstring for Twitter_handler"""
def __init__(self):
super(My_class, self).__init__()
if __name__ == '__main__':
my_handler = My_class()
这是我得到的错误
Traceback (most recent call last):
File "main.py", line 12, in <module>
my_handler = My_class()
File "main.py", line 9, in __init__
super(My_class, self).__init__()
TypeError: super() argument 1 must be type, not classobj
如果我将“My_class”的超类更改为对象,它可以正常工作。我哪里错了?
答案 0 :(得分:9)
答案 1 :(得分:7)
cmd.Cmd不是Python 2.5,2.6,2.7中的新样式类。
请注意,您的代码不在Python 3.0中引发异常。
答案 2 :(得分:2)
因此如果super()不起作用,请使用:
import cmd
class My_class(cmd.Cmd):
def __init__(self):
cmd.Cmd.__init__(self)
答案 3 :(得分:2)
如果super()
扩展MyClass
,您仍然可以使用object
。即使cmd.Cmd
模块不是新式类,这仍然有效。像这样:
#!/usr/bin/python
import cmd
class My_class (cmd.Cmd, object):
"""docstring for Twitter_handler"""
def __init__(self):
super(My_class, self).__init__()
if __name__ == '__main__':
my_handler = My_class()