1
私は、バイナリストリームを人間が読めるように変換するためのクラスを持っています。私はバイナリメッセージを送受信するので、両方向に翻訳したいと思います。このクラスの属性は、ほとんど同じ方法で作成されます。つまり、startbyteからstopbyteにバイトを取り込んでデコードします。そのためにプロパティを使用することにしました。しかし、クラス属性を定義するときに使用される一般的な "プロパティ"を作ることはできますか?Pythonでクラス属性の '標準プロパティ'を作成します。
class Packet(object):
def __init__(self, data):
self.data = data
def standard_getter(startbyte, stopbyte):
def getter(self):
return decode(self.data[startbyte:stopbyte])
return getter
def standard_setter(startbyte, stopbyte):
def setter(self, value):
self.data[startbyte:stopbyte] = encode(value)
return setter
# the way I define properties by now:
protocol_type = property(standard_getter(16, 18), standard_setter(16, 18))
protocol_sub_type = property(standard_getter(18, 20), standard_setter(18, 20))
# the way I would like to do it:
protocol_type = property(standard_property(16, 18))
# or
protocol_type = standard_property(16, 18)
私は2つの引数を取り、プロパティ(ゲッター、セッター)を返す関数を定義しようとしたが、いつも私は関数に「自己」のインスタンスを与えることにこだわっています。私はそれを作る良い方法はありますか?
偉大なもの、それは私が必要なものです。私はクラスの外に置くことができますが、今は私にとっては意味がありません。 – Grysik