>> 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 -- http://mail.python.org/mailman/listinfo/python-list