Python Cmd模块,子类化问题

时间:2009-04-20 21:18:37

标签: python

我正在尝试解决这段代码中无法解决的问题:

#!/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_c​​lass”的超类更改为对象,它可以正常工作。我哪里错了?

4 个答案:

答案 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()