Ordered Member Functions of a Class in Python
# References:
# 1. https://stackoverflow.com/questions/48145317/can-i-add-attributes-to-class-methods-in-python
from functools import wraps
# Define a decorator
def attributes(**attrs):
    """
    Set attributes of member functions in a class.
    ```
    class AGoodClass:
        def __init__(self):
            self.size = 0
        @attributes(order=1)
        def first_good_member(self, new):
            return "first good member"
        @attributes(order=2)
        def second_good_member(self, new):
            return "second good member"
    ```
    References:
    1. https://stackoverflow.com/a/48146924/1477359
    """
    def decorator(f):
        @wraps(f)
        def wrapper(*args, **kwargs):
            return f(*args, **kwargs)
        for attr_name, attr_value in attrs.items():
            setattr(wrapper, attr_name, attr_value)
        return wrapper
    return decorator
class AGoodClass:
    def __init__(self):
        self.size = 0
    @attributes(order=1)
    def first_good_member(self, new):
        return "first good member"
    @attributes(order=2)
    def second_good_member(self, new):
        return "second good member"
# Test
agc = AGoodClass()
print(agc.first_good_member.order)
print(agc.second_good_member.order)
Planted: 
by L Ma;
 Similar Articles:
til/programming/python/python-class-methods-ordered Links to:LM (2020). 'Ordered Member Functions of a Class in Python', Datumorphism, 12 April. Available at: https://datumorphism.leima.is/til/programming/python/python-class-methods-ordered/.