Я использую библиотеку attrs для создания структуры данных для путей. Я хочу, чтобы первым атрибутом был каталог root, к которому автоматически присоединяются другие атрибуты. Я хотел бы иметь что-то вроде этого:
def my_converter(obj, value):
return os.path.join(obj.root, value)
class Paths:
root = attr.ib()
relative = attr.ib(converter=my_converter)
Это бы сработало, но функция converter
получает только один аргумент. Есть ли чистый способ преобразования значения с использованием других атрибутов перед проверкой? validator
принимает три аргумента (один из которых является объектом), но он не является подходящим местом для преобразования значений. Кроме того, помещение всего в __attrs_post_init__
отрицает цель использования атрибутов.