【发布时间】:2020-12-16 21:22:09
【问题描述】:
是否有使用 attrs 转换器的装饰器?
有 validator 和 default 的装饰器,但我看不到 converter 的任何内容。
有可能吗?
我更喜欢将函数作为类内的“方法”,而不是类外的全局函数。装饰器允许这样做:)
验证器的示例 sn-p。
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 )
我想使用转换器做类似的事情。将一些输入字节修剪为上限的示例。
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
【问题讨论】:
标签: python-attrs