Я пытаюсь подключиться через 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(). Проблема сохраняется в этих случаях.
Спасибо!