[Python-de] Methoden Wrapper

Tomek Meka tmeka at gmx.net
Mit Aug 20 16:26:57 EDT 2003


Hi!

Wenn Du eine Methode hast, dann hast Du den self-Parameter als im_self
Attribut. Ich hoffe, der Code ist selbserklärend:

>>> class Plus:
...    def __init__(self, v):
...        self.v = v
...    def plus(self, value):
...        return self.v + value
...
>>> Plus.plus
<unbound method Plus.plus>
>>> p = Plus(1)
>>> p.plus(2)
3
>>> p.plus
<bound method Plus.plus of <__main__.Plus instance at 0x008FA8F0>>
>>> p
<__main__.Plus instance at 0x008FA8F0>
>>> method = p.plus
>>> method.im_self
<__main__.Plus instance at 0x008FA8F0>
>>> method(2)
3
>>> def wrap(fun):
...    def wrapped(*args, **kwargs):
...        print "calling method..."
...        print "result: ", fun(*args, **kwar
...    return wrapped
...
>>> w = wrap(method)
>>> w
<function wrapped at 0x00901230>
>>> w(2)
calling method...
result:  3

Gruesse,
Tomek




-- 
COMPUTERBILD 15/03: Premium-e-mail-Dienste im Test
--------------------------------------------------
1. GMX TopMail - Platz 1 und Testsieger!
2. GMX ProMail - Platz 2 und Preis-Qualitätssieger!
3. Arcor - 4. web.de - 5. T-Online - 6. freenet.de - 7. daybyday - 8. e-Post