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

Diez B. Roggisch deets at web.de
Di Apr 8 11:47:06 UTC 2008


On Tuesday 08 April 2008 12:28:34 Felix Schwarz wrote:
> 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?

Das ist leider nicht moeglich - wenn es auch nett waere und immer mal wieder 
gewuenscht wird. 

Ein ueblicher Trick ist halt statt eines Modules mit lauter Funktionen eine 
Klasse mit classmethods zu nehmen.

Diez