数据类与yaml结婚。
yamliz的Python项目详细描述
亚姆利兹
python的3.7数据类与pyyaml结合在一起。
安装:
pip install yamliz
用法示例:
importdataclassesimportyamlizfromyamlizimportfields@dataclasses.dataclassclassSome(yamliz.Able):id:int=fields.Integer()mac:str=fields.MacAddress()ip:str=fields.IPv4()version:int=fields.Integer(default=411)
现在Some
对象可以创建为纯python对象(感谢dataclass
)
它配有__init__
、__repr__
、__eq__
和其他一些方法。
>>>obj=Some(123,'aa:bb:cc:11:22:33','192.168.11.6')>>>objSome(id=123,mac='aa:bb:cc:11:22:33',ip='192.168.11.6',version=411)>>>print(obj)!iz/Someid:123ip:192.168.11.6mac:aa:bb:cc:11:22:33version:411
它的属性是常规的python属性:
>>>obj.id123>>>obj.mac'aa:bb:cc:11:22:33'>>>obj.ip'192.168.11.6'>>>obj.version=0# can be assigned>>>print(repr(obj))Ints(id=123,mac='aa:bb:cc:11:22:33',ip='192.168.11.6',version=0)
它还可以从yaml直接反序列化到自定义对象:
>>>yaml_string="""!iz/Someid: 22001ip: 12.13.14.15mac: aa:bb:cc:11:22:33version: 0""">>>importyaml>>>obj2=yaml.load(yaml_string,Loader=yaml.Loader)>>>repr(obj2)Some(id=22001,mac='aa:bb:cc:11:22:33',ip='12.13.14.15',version=0)
有待进一步记录…