Bindungen an Attribute in Python
Das folgende Beispiel erzeugt ein Objekt der Klasse »c_long«, welches den Wert »12« enthält.
- Protokoll
from ctypes import c_long
v = c_long( 12 )
v
c_long(12)
Solch ein Objekt enthält ein Attribut namens »value«, welches den bei der Erzeugung des Objekts mit »c_long( 12 )« angegebenen Wert »12« enthält.
- Auswertung
v.value
12
Ein Attribut ist wie ein gewöhnlicher Bezeicher ein potentielles Ziel für eine Bindung.
- Ziel einer Bindung Das Ziel einer Bindung wird jeweils auf der linken Seite des Gleichheitszeichens in einer Bindungsanweisung angegeben und durch die Ausführung der Anweisung an das durch die rechte Seite angegebene Objekt gebunden
Durch eine Bindung an jenes Attribut, kann ein neuer Wert in den Speicher des Attributs geschrieben werden.
- Bindung
v.value = 72
- Auswertung
v
c_long(72)
- Auswertung
v.value
72
Nach der Ausführung der Bindungsanweisung ist der gewöhnliche Bezeichner »v« weiterhin an dasselbe Objekt gebunden, jedoch wurde das Objekt durch eine Bindung an sein Attribut verändert.
Das folgende Beispiel zeigt die Konfiguration der Genauigkeit der Klasse »Decimal« durch eine Bindung an ein Attribut des Objektes »getcontext()«. (Das Objekt ist hier, durch den Wert des Aufsdrucks »getcontext()« gegeben.)
- Protokoll
from decimal import Decimal
from decimal import getcontext
getcontext().prec = 6
Decimal( 1 )/Decimal( 7 )
Decimal('0.142857')getcontext().prec = 50
Decimal( 1 )/Decimal( 7 )
Decimal('0.14285714285714285714285714285714285714285714285714')
Synthetische Methoden
def f(): pass
from types import *
f.i = 0
def inc( f ): f.i += 1
f.inc = MethodType( inc, f )
f.inc()
f.i
1