Я пытаюсь подключиться через telnet к лабораторному инструменту. Я хотел бы расширить класс Telnet
из модуля telnetlib
в стандартной библиотеке, включив функции, специфичные для нашего инструмента:
import telnetlib
class Instrument(telnetlib.Telnet):
def __init__(self, host=None, port=0, timeout=5):
super(Instrument,self).__init__(host, port, timeout)
Все, что я пытаюсь сделать в этом коде, наследует метод __init__
от родительского класса (telnetlib.Telnet
) и передает стандартные аргументы, поэтому я могу добавить вещи в __init__
позже. Эта формула работала для меня в других случаях; на этот раз это дает мне ошибку в инструкции super()
, когда я пытаюсь создать экземпляр:
TypeError: must be type, not classobj
Я посмотрел исходный код telnetlib, и Telnet выглядит как класс старого стиля (он не наследуется от object
). Мне интересно, может ли это быть источником моей проблемы? Если да, то как его можно преодолеть? Я видел примеры кода, где производный класс наследует как от суперкласса, так и от object
, хотя я не совсем уверен, является ли это ответом на ту же проблему, что и я.
Полное раскрытие: я также попытался использовать telnetlib.Telnet
вместо super()
и from telnetlib import Telnet
с Telnet
вместо super()
. Проблема сохраняется в этих случаях.
Спасибо!