Seite 1 von 1

property-Funktion

Verfasst: Samstag 15. März 2008, 11:47
von G80001
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!

Re: property-Funktion

Verfasst: Samstag 15. März 2008, 12:01
von Trundle
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.

Verfasst: Samstag 15. März 2008, 12:09
von G80001
Danke! Mit deinem Hinweis klappt es jetzt so, wie ich es erwartet habe!