Python - Erben von Klassen im alten Stil
Ich versuche über Telnet eine Verbindung zu einem Laborgerät herzustellen. Ich möchte das verlängernTelnet
Klasse von dertelnetlib
Modul in der Standardbibliothek, das Funktionen enthält, die für unser Instrument spezifisch sind:
import telnetlib
class Instrument(telnetlib.Telnet):
def __init__(self, host=None, port=0, timeout=5):
super(Instrument,self).__init__(host, port, timeout)
Alles, was ich in diesem Code zu tun versuche, ist das erben__init__
Methode aus der Elternklasse (telnetlib.Telnet
) und geben Sie die Standardargumente weiter, damit ich sie ergänzen kann__init__
später. Diese Formel hat bei anderen Gelegenheiten für mich funktioniert; diesmal gibt es mir einen fehler bei dersuper()
Anweisung, wenn ich versuche zu instanziieren:
TypeError: must be type, not classobj
Ich habe mir den Quellcode für telnetlib angesehen, und Telnet scheint eine Klasse alten Stils zu sein (von der es nicht erbt)object
) - Ich frage mich, ob dies die Ursache für mein Problem sein könnte. Wenn ja, wie kann es überwunden werden? Ich habe einige Codebeispiele gesehen, in denen die abgeleitete Klasse sowohl von der Oberklasse als auch von der Oberklasse erbtobject
, obwohl ich nicht ganz sicher bin, ob dies eine Antwort auf das gleiche Problem wie ich ist.
Vollständige Offenlegung: Ich habe es auch mit versuchttelnetlib.Telnet
anstelle vonsuper()
, undfrom telnetlib import Telnet
mitTelnet
anstelle vonsuper()
. In diesen Fällen besteht das Problem weiterhin.
Vielen Dank!