В вашем случае вы не можете сделать это, используя attrs, по ссылке философии : влияние attrs во время выполнения очень близко к нулю, потому что вся работа выполняется, когда класс определен.Как только вы его инициализируете, attrs полностью исчезнет.
Чтобы увидеть, что делает attrs real:
import attr
import inspect
@attr.s
class A(object):
b = attr.ib(converter=str)
print(inspect.getsource(A.__init__))
, результат будет
def __init__(self, b):
self.b = __attr_converter_b(b)
Таким образом, вы можете видеть, что вся магия выполняется только в функции init, поэтому после инициализации экземпляра attrs больше не может с этим справиться, если вы действительно хотите контролировать свое собственное поведение set, почему бы не использовать дескриптор, который предназначен для классаатрибуты.