strange __call__

Rahul codedivine at gmail.com
Wed Jun 29 23:38:20 CEST 2005


Hi.
I understood your point.
thanks...
rahul
Steven Bethard wrote:
> Steven Bethard wrote:
> >
> > def wrap(obj):
> >      def f(*args, **kwargs):
> >          for arg in args:
> >              print arg
> >          return obj(*args, **kwargs)
> >      return f
> >
> > @wrap
> > def func(a, b, c):
> >      ...
> >
> > class C(object):
> >      ...
> > C = wrap(C)
>
> Rahul top-posted:
>  > If you do C = wrap(C) C no longer remains a class..it becomes a
>  > function.
>
> And if you do
>      func = wrap(func)
> which is the equivalent of
>      @wrap
>      def func(...):
>          ...
> then func no longer has the same signature.  But as Reinhold suggests,
> does that really matter?  In the case of the class, you can still call
> it to create class instances.  In the case of the function, you can
> still call it to retrieve return values.  Why do you care about the type
> of the object?
>
> In the case that it does matter, e.g. you want to be able to invoke your
> methods from the class instead of the instance, you can wrap the
> specific function that you need wrapped, e.g.
>
> class C(object):
>      @wrap
>      def __new__(cls, *args):
>          super(C, cls).__new__(cls, *args)
>      ...
> 
> STeVe




More information about the Python-list mailing list