Class con un registro de métodos basado en decoradores

Tengo una clase que tiene varios métodos, cada uno de los cuales tiene ciertas propiedades (en el sentido de la calidad). Me gustaría que estos métodos estén disponibles en una lista dentro de la clase para que puedan ejecutarse de inmediato. Tenga en cuenta que las propiedades pueden ser intercambiables, por lo que esto no se puede resolver utilizando más clases que heredarían de la original. En un mundo ideal, se vería así:

class MyClass:
    def __init__():
        red_rules = set()
        blue_rules = set()
        hard_rules = set()
        soft_rules = set()

    @red
    def rule_one(self):
        return 1

    @blue
    @hard
    def rule_two(self):
        return 2

    @hard
    def rule_three(self):
        return 3

    @blue
    @soft
    def rule_four(self):
        return 4

Cuando se crea una instancia de la clase, debería ser fácil ejecutar simplemente todas las reglas rojas y suaves combinando los conjuntos y ejecutando los métodos. Sin embargo, los decoradores para esto son complicados ya que un decorador de registro regular puede completar un objeto global pero no el atributo de clase:

def red(fn):
    red_rules.add(fn)
    return fn

¿Cómo hago para implementar algo como esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta