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()
。これらの場合、問題は解決しません。
ありがとう!