0

当验证器中发生错误时,可以将失败属性的名称添加到错误消息中,因为该名称已传递给验证器。

但是,如果转换器中发生错误,我看不到获取失败属性名称的方法,例如

@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'

我该如何处理这种情况?

4

1 回答 1

0

可悲的是,目前这是不可能的,因为converter只收到了价值,没有别的。attrs 在您的情况下产生的代码是

self.attr1 = int(attr1)

我认为这与https://github.com/python-attrs/attrs/issues/146切线相关。

于 2019-01-16T12:46:28.470 回答