property-Funktion

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
G80001
User
Beiträge: 2
Registriert: Samstag 15. März 2008, 11:40

Samstag 15. März 2008, 11:47

Hallo,
ich beschäftige mich gerade mit der property-Funktion und komme irgendwie nicht mehr weiter. Hier mein Beispiel-Programm:

Code: Alles auswählen

class a:
	def __init__(self, value):
		self.g = value

	def set(self, new_value):
		print "set"
		self.g = new_value

	def get(self):
		print "get"
		return self.g

	d = property(get, set)

a = a(10)
print a.d
a.d = 20
print a.d
print a.g
Erwartet hätte ich jetzt folgende Ausgabe:

Code: Alles auswählen

get
10
set
get
20
20
Stattdessen erhalte ichfolgende Ausgabe:

Code: Alles auswählen

get
10
20
10
Kann mir jemand erklären, wo da mein (Denk-)Fehler liegt? Es scheint mir, dass die set-Methode überhaupt nicht aufgerufen wird, obwohl ich das bei dem Befehl a.d = 20 eigentlich erwartet hätte.

Vielen Dank für jede Hilfe!
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Samstag 15. März 2008, 12:01

G80001 hat geschrieben:Kann mir jemand erklären, wo da mein (Denk-)Fehler liegt?
`a` ist keine New-Style-Klasse und property funktioniert nur bei New-Style-Klassen (richtig). Um eine New-Style-Klasse zu bekommen, muss deine Klasse von `object`(oder einer anderen New-Style-Klasse) erben.
G80001
User
Beiträge: 2
Registriert: Samstag 15. März 2008, 11:40

Samstag 15. März 2008, 12:09

Danke! Mit deinem Hinweis klappt es jetzt so, wie ich es erwartet habe!
Antworten