Ein Hinweis zu Eigenschaft
Im 2. System [^ 1].
[^ 1]: In der 3. Serie wird es bedingungslos als neuer Stil beurteilt, sodass auch dann keine Probleme auftreten, wenn Sie den alten Stil schreiben.
Ich schreibe etwas, das im alten Stil kein altmodisches Feature ist, also 100% benutzerfreundlich.
foo.py
class New(object):
def __init__(self):
self._x = 10
@property
def x(self):
return self._x * 2
@x.setter
def x(self, v):
self._x = v
class Old():
def __init__(self):
self._x = 10
@property
def x(self):
return self._x * 2
@x.setter
def x(self, v):
self._x = v
if __name__ == '__main__':
n = New()
n.x = 10
print ( n.x )
o = Old()
o.x = 10
print ( o.x )
Sowohl "Neu" als auch "Alt" sind bis auf die Zeile der "Klassen" -Deklaration genau gleich.
python
$ python foo.py
20
10
Ich habe verschiedene Dinge recherchiert [^ 2], aber ↓ ist am intuitivsten
[^ 2]: Gibt es eine Python-Version von Data :: Dumper oder eine B :: Deparse?
Nach Haupt ändern
if __name__ == '__main__':
n = New()
print (vars(n))
n.x = 2
print (vars(n))
o = Old()
print (vars(o))
o.x = 2
print (vars(o))
python
$ python foo.py
{'_x': 10}
{'_x': 2}
{'_x': 10}
{'x': 2, '_x': 10}
Kurz gesagt, alt
class Old():
def __init__(self):
self._x = 10
if __name__ == '__main__':
o = Old()
print (vars(o))
o.x = 2
print (vars(o))
Das Gleiche wie Laufen.