safely rename a method with a decorator
R. David Murray
rdmurray at bitdance.com
Sun Mar 22 21:15:51 EDT 2009
Daniel Fetchinson <fetchinson at googlemail.com> wrote:
> >> I'd like to implement a decorator that would rename the method which
> >> it decorates. Since it's a tricky thing in general involving all sorts
> >> of __magic__ I thought I would ask around first before writing
> >> something buggy :)
> >>
> >> It should work something like this:
> >>
> >> class myclass( object ):
> >> @rename( 'hello' )
> >> def method( self ):
> >> print 'ok'
> >>
> >> # tests
> >>
> >> inst = myclass( )
> >> inst.method( ) # raise an AttributeError
> >> inst.hello( ) # prints 'ok'
> >> myclass.method # raise an AttributeError
> >> myclass.hello # prints <unbound method myclass.hello>
> >> assert 'method' in dir( myclass ) is False
> >> assert 'hello' in dir( myclass ) is True
> >>
> >> Any ideas?
> >>
> > What is your use case? Why don't you just give the method the right name
> > in the first place? :-)
>
> The use case is that I'm writing a turbogears application in which the
> URLs are determined by the method names. People might want to change
> these names if they want to change the URLs. One way would be to put
> the method names into a turbogears configuration file and the @rename
> decorator could fetch it from there.
Use a WSGI routing engine instead.
--
R. David Murray http://www.bitdance.com
More information about the Python-list
mailing list