[Python-de] property-Funktion mal nicht in Klassen verwenden
Stephan Diehl
stephan.diehl at gmx.net
Di Apr 8 14:00:38 CEST 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
Mehr Informationen über die Mailingliste python-de