[python-users] String als Objektnamen verwenden
hunniger
do_not_reply_to_this_address at t-online.de
Di Okt 30 18:15:52 CET 2007
Ich schließe mich Stefan an, insofern als dass die Benutzung von Strings
für diesen
Zweck nicht zu empfehlen ist.
Dennoch gebe ich hier die Lösung des Problems unter Verwendung von
Strings an:
class range:
def __init__(self):
self.value=23
def setValue(self,x):
self.value=x
def getValue(self):
return self.value
class boss:
def __init__(self):
self.a=range()
self.b=range()
self.b.setValue(42)
def method(self,src,dest):
exec(src+".setValue("+dest+".getValue())")
b=boss()
b.method("self.a","self.b")
print b.a.getValue()
Die Klass "range" Stellt die Gemeinsame Oberklasse der die Objekte
"despecle_tight_slider" und "despecle_thight_spin_ctr" (im Quelltext
vereinfacht "a" und "b" gennant) dar. Die Klasse "boss" beherbergt die
zu geforderte Methode.
Dirk
und
> Versuch's mal mit getattr():
> getattr(self, 'despecle_tight_slider') # liefert die methode
> getattr(self, 'despecle_tight_slider')() # führt die aus
> http://docs.python.org/lib/built-in-funcs.html
>
> Falls möglich hantierst du idealerweise gar nicht erst mit Strings rum,
> sondern übergibst direkt die Methode (und nicht nur deren Name) als
> Parameter.
>
>
Mehr Informationen über die Mailingliste python-users