PyDto实现记录 实现背景 因为python语言的特性,在业务数据返回方面,没有类似JAVA DTO的概念实现主体,苦于目前返回的数据结构都需要自己写代码整合,所以需要模仿JAVA DTO的概念写一个工具包,方便定义返回结构体。 诉求 例如在返回一个用户数据的时候,python的sqlalchemy或者某一个类直接返回所有的结构数据,甚至会带上token等敏感数据,这时候通常会在返回前使用代码拼装整合,变动结构也需要变动代码。理解JAVA DTO概念后想到是否有类似的包,可以在数据层与业务层之间进行拦截,根据定义好的结构直接返回相应数据结构。 思路 如果要方便使用,肯定不能在sqlalchemy或者字典或者对象本身进行操作,需要进行隔离,那么选用的方式就是类继承的形式,将数据解析以及自动拼装的方法封装进去。 字典与类的形式相对简单,容易解析多层结构,但是遇到sqlalchemy需要进行调用返回链表数据结构,所以需要特殊的方式进行处理。 if type(obj) != dict and not hasattr(obj, "iter"): for key_name, k_typ.... 模仿JAVA DTO概念的实现的包PyDto DTO