objectmapper是一个用于自动对象映射的类。它帮助您以简单、透明的方式在项目层(数据层、服务层、视图)之间创建对象。
object-mapper的Python项目详细描述
版本1.1.0
authormarazt
版权所有marazt
许可证麻省理工学院许可证(mit)
上次更新时间2019年7月13日
包下载https://pypi.python.org/pypi/object-mapper-
版本
1.1.0-2019/07/13
- 添加对嵌套对象的基本支持,谢谢[@direbearform](https://github.com/direbearform)
1.0.7-2019/06/19
- 修复映射程序dict中的类型名以避免冲突,谢谢[@renavieira](https://github.com/renanvieira)
1.0.6-2018/10/28
- 添加了指定排除字段的功能,谢谢[@uralov](https://github.com/uralov)
1.0.5-2018/02/21
- 支持动态属性[@nijm](https://github.com/nijm)
1.0.4-2017/11/03
- 迁移到新的pypi.org部署
1.0.3-2015年5月15日
- 增加了对none映射的支持[@ramiabughazaleh](https://github.com/ramiabughazaleh)
1.0.2-2015/05/06
- 增加了对大小写不敏感映射的支持[@ramiabughazaleh](https://github.com/ramiabughazaleh)
1.0.1-2015/02/19
- 包信息的修复
1.0.0-2015/02/19
- 初始版本
关于
objectmapper是一个受.netautomapper启发的自动对象映射类。它帮助您以简单、透明的方式在项目层(数据层、服务层、视图)之间创建对象。
示例
- 映射没有映射定义的属性
在这种情况下,只映射目标类和源类中目标类的这些属性。其他属性未映射。假设类A具有属性name和last_name,类B具有属性name。objectmapper的初始化为:
python mapper = ObjectMapper() mapper.create_map(A, B) instance_b = mapper.map(A(), B)
在这种情况下,a.name的值将被复制到b.name中。
- 使用定义的映射函数进行映射
假设类A具有属性first_name和last_name,类B具有属性full_name,类C具有属性反转名。并希望以某种方式映射它B.full_name = A.first_name + A.last_name和C.reverse_name = A.last_name + A.first_name对象映射器的初始化将是:
``` python mapper=objectmapper()映射器。创建映射器(a,b,{'name':lambda a:a.first_name+“”+a.last_name})映射器。创建映射器(a,c,{'name':lambda a:a.last_name+“”+a.first_name})
实例b=mapper.map(a(),b)实例c=mapper.map(a(),c)```
在这种情况下,映射到B.name的将被映射到A.first_name + " " + A.last_name,在这种情况下,映射到C.name的将被映射到A.last_name + " " + A.first_name
- 映射抑制
出于某些目的,可能需要抑制某些映射。假设类A具有属性name和last_name,类B具有属性name和last_name。我们只想将A.name映射到B.name,而不是A.last_name到B.last_name对象映射器的初始化将是:
``` python mapper=objectmapper()mapper.create_map(a,b,{'last_name':none})
实例b=mapper.map(a(),b)```
在这种情况下,a.name的值将被属性namename自动复制到B.name。由于抑制(lambda函数为none),属性A.last_name将不会被映射。
- 不区分大小写映射
假设我们有一个类A,它的属性分别是Name和Age,Age和B分别是name和age和age,B和^{{tt1}$到B的映射^{{tt1}$到^{{tt4}$,映射器的初始化将是B.name=A.Name和B.age=B.age=^{{tt43}$初始化对象映射器的初始化将是A.Age初始化{tt:
python mapper = ObjectMapper() mapper.create_map(A, B) instance_b = mapper.map(A(), B, ignore_case=True)
在这个Case,a.name的值将被复制到b.name中,a.age的值将被复制到b.age中。
注意:您可以在测试包中找到更多示例