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

Stephan Diehl stephan.diehl at gmx.net
Di Apr 8 12:00:38 UTC 2008


Ich bin's nochmal. Ich nehme meine Aussage von vorhin zurueck. Was du willst 
macht schon Sinn. Man kann ein bisschen tricksen und z.B. folgendes machen:
----------------------------------------------------------
import sys

class MyModule(object):

    @property
    def fourtytwo(self):
        return 42

sys.modules['MyModule'] = MyModule()

import MyModule

print MyModule.fourtytwo

from MyModule import fourtytwo

print fourtytwo
--------------------------------------------------------

Allerdings muss man dann damit leben, dass man das modul als Klasse definiert 
und irgendwie in die sys.modules reinschmuggelt. Also nicht sehr elegant.

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