Wilbert Berendsen schrieb:
> Hi, is it possible to manipulate class attributes from within a decorator 
> while the class is being defined?
> 
> I want to register methods with some additional values in a class attribute. 
> But I can't get a decorator to change a class attribute while the class is 
> still being defined. Something like:
> 
> class Parser(object):
>   
>   regexps = []
>   def reg(regexp):
>     def deco(func):
>       regexps.append((regexp, func))
>       return func
>     return deco
>   
>   @reg(r'".*"')
>   def quoted_string(self):
>     pass
> 
> How can I reach the class attribute `regexps' from within a decorator?

It's really tricky . The class object doesn't exists yet. It's created
after all functions are parsed and created. You have can walk up the
stack frames but it's ugly.

Christian

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to