【问题标题】:Get attribute name on exception in converter在转换器中获取异常的属性名称
【发布时间】:2019-06-05 03:48:08
【问题描述】:

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

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

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

我该如何处理这种情况?

【问题讨论】:

    标签: python-attrs


    【解决方案1】:

    遗憾的是,目前这是不可能的,因为converter 只接收值而没有其他值。 attrs 在您的情况下生成的代码是

    self.attr1 = int(attr1)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-16
      • 2019-02-12
      • 2010-11-05
      • 1970-01-01
      • 2014-10-27
      • 2021-08-19
      • 2011-11-02
      相关资源
      最近更新 更多