attrs 转换器的装饰器

Bre*_*mon 5 python-attrs

是否有使用 attrs 转换器的装饰器?

validator和的装饰器default,但我看不到任何提到的converter

是否可以?

我更喜欢将该函数作为类内的“方法”,而不是类外的全局函数。装饰器允许这样做:)

验证器的示例片段。

    payload : bytes = attr.ib( default=b'', on_setattr=attr.setters.validate )

    #! NOTE: using attrs validator as a property setter function.
    @payload.validator
    def payload_setter( self, attribute : attr.Attribute, value : bytes ) -> None :
        self.payload_length = len( value )
Run Code Online (Sandbox Code Playgroud)

我想使用转换器做类似的事情。将某些输入字节修剪到上限的示例。

    data : bytes = attr.ib( default=b'', on_setattr=attr.setters.converter )

    #! NOTE: using attrs converter as a property setter function.
    @data.converter
    def data_setter( self, attribute : attr.Attribute, value : bytes ) -> None :
        trimmed_value = value[:10]
        return trimmed_value
Run Code Online (Sandbox Code Playgroud)

hyn*_*nek 0

目前还没有。

关于这一点已经做了一些工作,但有人怀疑这样做是否有意义:https://github.com/python-attrs/attrs/pull/404