[Python-de] Methoden Wrapper

Simon Pamies lists at bipbap.de
Mit Aug 20 15:44:25 EDT 2003


>Hallo!
>
>Ich muss ehrlich sagen, ich verstehe nicht, was Du meinst :-( Schreib am
>besten einen winzigen Codebeispiel, der aber zeigen wuerde, was fuer Dich
>nicht
>erwartungsgemaes funktioniert. 
>
>Gruesse,
>Tomek
>
>P.S. Es ist ein guter Brauch in dieser Liste, seinen vollen Namen zu
>benutzen. 
>

Oh Sorry - is geändert - hier ein ausführliches Beispiel:

a) Ich habe ein Klasse <Dummy>

>>> class Dummy:
	def bound_method(self):
		print 'method belongs to: ' + str(self)

b) ... eine methode die wrappen soll

>>> def wrap(method):
	def _method_wrapper(*arg, **kw):
		print arg
		apply(method, arg, kw)
		
	return _method_wrapper

c) und eine Ausgabe die mir nicht passt :-(

>>> cl = Dummy()
>>> cl.bound_method = wrap(cl.bound_method)
>>> cl.bound_method()
()
method belongs to: <__main__.Dummy instance at 0x00A71140>
 >>> 

d) ich würde aber gerne auf das self zugreifen können, also
so etwas schreiben:

>>> def wrap(method):
	def _method_wrapper(*arg, **kw):
		caller = args[0]            # hier würd ich gern das self haben, also diese <__main__.Dummy instance at 0x00A71140>
		apply(method, arg, kw)
		
	return _method_wrapper

wie kann ich sonst auf ein schon gebundenes self zugreifen??

thx
Simon