Beim Definieren einer Eigenschaft in Python sehen die meisten Beispiele folgendermaßen aus:
property1
class Prop1(object):
@property
def x(self):
'''x property'''
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
Mit diesem Eigenschaftsdekorateur kann jedoch nur Getter angegeben werden. Selbst wenn Sie dem Deleter einen Eigenschaftsdekorator wie unten gezeigt hinzufügen, ist der Deleter nicht definiert. (Setter / Getter ist definiert.)
property2
class Prop2(object):
@property
def x(self):
del self._x
@x.setter
def x(self, value):
self._x = value
@x.getter
def x(self):
return self._x
Unabhängig vom Deleter scheint es zu vergessen, welcher der Setter und Getter den Eigenschaftsdekorateur haben soll. Andererseits fühlt es sich unangenehm an, sich wie folgt vollständig mit dem Dekorateur zu verabschieden.
property3
class Prop3(object):
def getx(self):
return self._x
def setx(self, value):
self._x = value
def delx(self):
del self._x
x = property(getx, setx, delx, 'x property')
Wie wäre es also mit dem Schreiben, dass der Eigenschaftsdekorator nicht verwendet wird (als Funktion verwendet wird) + der Dekorator verwendet wird, um Getter / Setter / Deleter anzugeben?
property4
class Prop4(object):
x = property(doc='x property')
@x.setter
def x(self, value):
self._x = value
@x.getter
def x(self):
return self._x
@x.deleter
def x(self):
del self._x
Es fühlt sich jedoch so an, als würde man sich den Quellcode im Internet ansehen, und die Art und Weise, mit einem Immobiliendekorateur auf einem Getter zu schreiben, scheint die Mehrheit zu sein ...
Recommended Posts