is decorator the right thing to use?
Dmitry S. Makovey
dmitry at athabascau.ca
Thu Sep 25 15:36:16 EDT 2008
Aaron "Castironpi" Brady wrote:
>> I kept this part of the problem out of this discussion as I'm pretty sure
>> I can fill those in once I figure out the basic problem of
>> auto-population of proxy methods since for each class/method those are
>> going to be nearly identical. If I can autogenerate those on-the-fly I'm
>> pretty sure I can add some extra-logic to them as well including
>> signature change where A::bmethod(self,c,x) would become
>> A::bmethod(self,x) etc.
>
> Do you want to couple instances or classes together?
It would be nice to have objects of B, C and D classes not knowing that they
are proxied (as they are used on their own too, not only inside of A
objects).
> If A always proxies for B, C, and D, then the wrapper solution isn't
> bad.
the whole purpose of A is pretty much to proxy and filter. It's got some
extra logic to combine and manipulate b, c and d objects inside of A class
objects.
> If you're going to be doing any instance magic, that can change
> the solution a little bit.
>
> There's also a revision of the first implementation of Aproxy you
> posted, which could stand alone as you have it, or work as a
> classmethod or staticmethod.
>
> def Aproxy(fn):
> def delegate(self,*args,**kw):
> print "%s::%s" % (args[0].__class__.__name__,fn.__name__)
> fnew=getattr(self.b,fn.__name__)
> return fnew(*args,**kw)
> setattr(A,fn.__name__,delegate)
> return fn
yep, that does look nicer/cleaner :)
More information about the Python-list
mailing list