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.
G80001
User
Beiträge: 2
Registriert: Samstag 15. März 2008, 11:40

property-Funktion

Beitragvon G80001 » 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

Re: property-Funktion

Beitragvon Trundle » 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

Beitragvon G80001 » Samstag 15. März 2008, 12:09

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

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]