Модуль Python Cmd, проблема создания подклассов
Я пытаюсь понять, что не работает в этом коде:
#!/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" на объект, он будет работать нормально. Куда я иду не так?
4 ответа
Решение
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)
Вы все еще можете использовать 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()