Ich habe eine Klasse, die verwendet wird, um Binär-Stream in Menschen lesbar zu übersetzen. Ich möchte es in beide Richtungen übersetzen, weil ich binäre Nachrichten sende und empfange. Attribute dieser Klasse werden größtenteils auf die gleiche Weise erstellt - nehmen Sie die Bytes von Startbyte zu Stopbyte und dekodieren Sie sie - also habe ich eine Entscheidung getroffen, eine Eigenschaft dafür zu verwenden. Kann ich aber eine allgemeine "Eigenschaft" angeben, die bei der Definition meiner Klassenattribute verwendet wird?Erstellen Sie eine 'Standard-Eigenschaft' für Klassenattribute in 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)
Ich habe versucht, eine Funktion zu definieren, die zwei Argumente und gibt Eigenschaft (Getter, Setter) Ich bin, aber immer fest im Geben „Selbst“ Instanz an die Funktion übernimmt. Gibt es einen schönen Weg, wie ich es schaffen kann?
Große, das ist, was ich brauchte. Ich weiß, dass ich es außerhalb der Klasse ausdrücken kann, aber inzwischen macht es keinen Sinn für mich. – Grysik