On 4/09/19 17:46, Peter Otten wrote: > Antoon Pardon wrote: > >> What I am trying to do is the following. >> >> class MyClass (...) : >> @register >> 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) : > @register > def foo(self): > pass > @register > def bar(self): > pass > def other(self): > pass > > print(MyClass.my_cool_functions)
Thanks for this idea. I think I can make this work for me. -- Antoon. -- https://mail.python.org/mailman/listinfo/python-list