DataClasses with Verifiers/Converters
rx-dataclasses的Python项目详细描述
接收数据类
类型验证和转换
fromtypingimport*fromrx.operatorsimportmapasrxmapfromrxdataimportdataclass,field,operators@rxmapdeftry_convert(n):returnint(n)ifisinstance(n,str)andn.isalpha()elsen@dataclassclassData:# only int.number:int=field(default=1,invoke=operators.typeguard())# only int or string convertable to int. Always results in int.convert_or_die:Union[int]=field(default=1,invoke=[try_convert,operators.typeguard()])# If is string and convertable to int - perform conversion. `typing.Any` type defined explicitly during `invoke` (just for example).convert_or_accept:Union[int,str]=field(default=1,invoke=[try_convert,operators.typeguard(Any)])>data=Data(None)TypeError:typeofnumbermustbeint;gotNoneTypeinstead>data=Data(convert_or_die=None)TypeError:typeofconvert_or_diemustbeint;gotNoneTypeinstead>Data(convert_or_accept=None)Data(number=1,convert_or_die=1,convert_or_accept=None)data=Data()data.number='3'>TypeError:typeofnumbermustbeint;gotstrinsteaddata.number=2>Data(number=2,convert_or_die=1,convert_or_accept=1)data.convert_or_die=2>Data(number=2,convert_or_die=2,convert_or_accept=1)data.convert_or_accept='3'>Data(number=2,convert_or_die=2,convert_or_accept=3)data.convert_or_accept='3s'>Data(number=2,convert_or_die=2,convert_or_accept='3s')data.convert_or_accept=type>Data(number=2,convert_or_die=2,convert_or_accept=<class'type'>)
说明
反应性python3数据类-具有attrs
类行为
- 在
init
和/或setattr
期间进行隐式和显式类型验证 - 在
init
和/或setattr
期间自定义预处理(转换) - 反应性属性
安装
^{pr2}$- 项目
标签: