04.09.19 17:21, Antoon Pardon пише:
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?
You can make register() returning a descriptor with the __set_name__()
method. A bit of black magic:
class register:
def __init__(self, func):
self.func = func
def __get__(self, instance, owner):
return self.func.__get__(instance, owner)
def __set_name__(self, owner, name):
if not hasattr(owner, 'my_cool_functions'):
owner.my_cool_functions = []
owner.my_cool_functions.append(name)
setattr(owner, name, self.func)
--
https://mail.python.org/mailman/listinfo/python-list