[Python-de] property-Funktion mal nicht in Klassen verwenden

Stephan Diehl stephan.diehl at gmx.net
Di Apr 8 10:47:30 UTC 2008


Felix,

dein Beispiel macht absolut keinen Sinn.
Schau mal unter http://docs.python.org/ref/descriptors.html
properties koennen mithilfe des descriptor protokolls implementiert werden.
Lange Rede, kurzer Sinn: properties machen nur Sinn, wenn an irgendeiner 
Stelle auf ein attribut (via getattr z.B. oder ueber die Punktnotation) 
zugegriffen wird.

Stephan

Am Dienstag, 8. April 2008 12:28:34 schrieb Felix Schwarz:
> Hi,
>
> die meisten kennen wohl die property-Funktion aus Python, mit
> der man folgenden Code schreiben kann:
> # -----------------------------------------------------------
> class Foo(object):
>      @property
>      def bar(self):
>          return 1
> foo = Foo()
> foo.bar
> # -----------------------------------------------------------
>
> Ich habe mir jetzt die Frage gestellt, ob auch soetwas möglich
> wäre:
> # -----------------------------------------------------------
> def bar2(self):
>      return 42
> bar = property(bar2)
> bar
> # -----------------------------------------------------------
>
> Da ich hier frage, funktioniert der zweite Code natürlich nicht,
> es wird nur ein property-Objekt zurückgegeben. Gibt es da einen
> kleinen Trick, um das zweite Szenario (Methodenaufruf über Auslesen
> einer Variable) zu ermöglichen?
>
> Vielen Dank,
> fs
>
> _______________________________________________
> python-de maillist  -  python-de at python.net
> http://python.net/mailman/listinfo/python-de