繁体   English   中英

Python Cmd模块,子类化问题

[英]Python Cmd module, subclassing issue

我正在尝试找出这段代码中没有用的东西:

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

super()仅适用于新式类

cmd.Cmd不是Python 2.5,2.6,2.7中的新样式类。

请注意,您的代码不会在Python 3.0抛出异常。

因此,如果super()不起作用,请使用:

import cmd

class My_class(cmd.Cmd):
    def __init__(self):
        cmd.Cmd.__init__(self)

如果MyClass扩展了object你仍然可以使用super() 即使cmd.Cmd模块不是新式类,这仍然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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM