Pythonのモジュールのドキュメントを読む際に、構造体クラスstruct
の使用方法の説明が少し残っていました。つまり、たとえば、 threading.Threadクラスオブジェクトの場合のように、サブクラスを作成するために継承されるクラスとしてではないことに気付くまでです。これを私に明らかにしたのは、ダグ・ヘルマンのPyMOTWでした。
興味がありますが、struct
サブクラスを作成することは可能ですか?これらを使用して、データストリーム自体に依存する形式を作成するなど、構造体オブジェクトに機能を追加できると思います。これの1つの用途は、可変長フィールドを持つデータストリームであり、その長さはストリームの初期部分に含まれます。または、以前のフィールドで設定されたフラグに応じて、特定のフィールドが含まれるか省略される場合。
たとえば、次のデータストリームがあるとします。
>>> data = '\x01\x00\x04\x73\x70\x61\x6d'
そして、私はそれを次のように開梱しました:
>>> struct.unpack('>BH4s', data)
(1, 4, 'spam')
ここで、最初の要素は、、data_type
2番目はa length
、3番目は可変長の文字列であり、その長さは2番目の要素によって指定されます。
length
残りのデータストリームをアンパックする方法に関する情報を取得するためにパーツを調べる「アンパッカー」を作成したい場合、struct
サブクラスを作成することはそれを実行するための良い方法でしょうか?この種のことの例はすでにありますか?