[PYTHON] Das Verhalten von @property unterscheidet sich zwischen Klassendefinition und alten und neuen Stilen

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.

Recommended Posts

Das Verhalten von @property unterscheidet sich zwischen Klassendefinition und alten und neuen Stilen
Die Antwort von "1/2" unterscheidet sich zwischen Python2 und 3
Das Einrückungsverhalten von json.dumps unterscheidet sich zwischen python2 und python3
Der Zeitpunkt, zu dem der Wert des Standardarguments ausgewertet wird, unterscheidet sich zwischen Ruby und Python.
Ich untersuchte das Verhalten bezüglich des Unterschieds zwischen Hard Link und Symbolic Link
Was ist der Unterschied zwischen "pip" und "conda"?
Über das Verhalten von copy, deepcopy und numpy.copy
Zusammenfassung der Unterschiede zwischen PHP und Python
Über den Unterschied zwischen "==" und "is" in Python
Was ist der Unterschied zwischen Unix und Linux?
Berücksichtigung des Unterschieds zwischen ROC-Kurve und PR-Kurve
Kennen Sie den Speicherort der Python-Klassendefinitionsdatei.
Was ist der Unterschied zwischen usleep, nanosleep und clock_nanosleep?
Visualisierung der Verbindung zwischen Malware und dem Callback-Server
Warum ist das erste Argument der [Python] -Klasse selbst?
pca.components_ von sklearn ist der Korrelationskoeffizient zwischen der Hauptkomponente und dem Merkmalsbetrag und wird als Faktorladebetrag bezeichnet.
Was ist der Unterschied zwischen symbolischen und harten Links?
Eine grobe Zusammenfassung der Unterschiede zwischen Windows und Linux
Ist die Lotterie rentabel? ~ LOTO7 und das Gesetz der großen Zahlen ~