safely rename a method with a decorator

Daniel Fetchinson fetchinson at googlemail.com
Mon Mar 23 01:24:19 CET 2009


>> 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.

Cheers,
Daniel



-- 
Psss, psss, put it down! - http://www.cafepress.com/putitdown



More information about the Python-list mailing list