How do I give a decorator acces to the class of a decorated function
On 4/09/19 17:46, Peter Otten wrote:
> Antoon Pardon wrote:
>> What I am trying to do is the following.
>> class MyClass (...) :
>> def MyFunction(...)
>> What I would want is for the register decorator to somehow create/mutate
>> class variable(s) of MyClass.
>> Is that possible or do I have to rethink my approach?
> If you are willing to delegate the actual work to the metaclass call:
> def register(f):
> f.registered = True
> return f
> def registered(name, bases, namespace):
> namespace["my_cool_functions"] = [
> n for n, v in namespace.items()
> if getattr(v, "registered", False)
> return type(name, bases, namespace)
> class MyClass(metaclass=registered) :
> def foo(self):
> def bar(self):
> def other(self):
Thanks for this idea. I think I can make this work for me.