Получить имя атрибута при исключении в конвертере
Когда в валидаторе произошла ошибка, можно добавить имя ошибочного атрибута в сообщение об ошибке, потому что это имя передано валидатору.
Но если в конвертере произошла ошибка, я не вижу способа получить имя атрибута с ошибкой, например
@attr.s
class Test:
attr1 = attr.ib(converter=int, validator=attr.validators.in_([1,2,3]))
attr2 = attr.ib(converter=int, validator=attr.validators.in_([1,2,3]))
>>> Test('1', '2a')
ValueError: invalid literal for int() with base 10: '2a'
Как я могу справиться с этим делом?
1 ответ
К сожалению, в настоящее время это невозможно, так как converter
получает только значение и ничего больше. Код, который генерирует attrs в вашем случае:
self.attr1 = int(attr1)
Я думаю, что это косвенно связано с https://github.com/python-attrs/attrs/issues/146.