ich (nicht allein, wie ich inzwischen nach einigem, was ich gelesen habe, weiß...) stehe vor folgendem Problem:
Code: Alles auswählen
class Foo(object):
def __init__(self):
self._x = 0
@property
def x(self):
return self._x * 2
@x.setter
def x(self, value):
self._x = value
Code: Alles auswählen
In [71]: f = Foo()
In [72]: f._x
Out[72]: 0
In [73]: f.x
Out[73]: 0
In [74]: f.x = 2
In [75]: f._x
Out[75]: 2
In [76]: f.x
Out[76]: 4
In [77]: f.x += 1
In [78]: f._x
Out[78]: 5
In [79]: f.x
Out[79]: 10
- Direkt '_x' verändern und 'x' lesen
- Das was im 'x.getter' geschieht im 'x.setter' erstmal wieder umkehren (funktioniert aber nur dann, wenn im getter lediglich etwas dazu- oder abgezogen wird)
- 'property' vergessen und mit 'f.set_x()' und 'f.get_x()' arbeiten
In meinem Beispiel ist es ja so, dass 'property()' mit 'x' (das vom 'x.getter' stammt) und dem Summand bzw. Subtrahend einen Wert ermitteln und diesen dann zum 'x.setter' schickt. Und mit 'raw-value' meine ich eben den Summand oder Subtrahend, den ich gerne hätte...
Während ich das hier so schreibe werd' ich das Gefühl nicht los, dass ich mir mal wieder meine eigene Grube schaufel... Ist das so?
mutetella