Python中如何将二维数组转换为自定义类对象数组?
把数据库返回的二维数组转为User对象列表的简单方法
作为Python新手碰到这种问题真的太常见啦,完全不用不好意思!其实根本不需要什么特殊的现成函数,用Python本身的语法就能轻松搞定,给你几种简单的方案:
1. 最简洁的列表推导式
这是Python里处理这类转换最常用的方式,一行代码就能搞定:
# 先获取数据库返回的二维数组 users_rows = get_users() # 把每个子数组转成User对象 user_objects = [User(row) for row in users_rows]
之后你遍历user_objects的时候,直接用user.name、user.surname就可以访问属性,完全不用再记索引位置啦。
2. 更直观的循环写法
如果觉得列表推导式有点抽象,也可以用普通的for循环逐个处理,逻辑更直白:
user_objects = [] # 遍历数据库返回的每一行数据 for row in get_users(): # 把当前行转成User对象,添加到列表里 user_objects.append(User(row))
3. 优化你的User类(可选)
你现在的User构造函数是依赖数组索引的,万一以后数据库字段顺序变了,代码容易出问题。可以把构造函数改成直接接收三个参数,然后用解包的方式转换:
class User: # 直接接收name、surname、age三个参数 def __init__(self, name, surname, age): self.name = name self.surname = surname self.age = age # 转换的时候用*解包每行数据,自动匹配构造函数的参数 user_objects = [User(*row) for row in get_users()]
这种写法更清晰,也更健壮,以后维护起来更省心。
总的来说,这几种方法都很简单,完全不需要额外的库,用Python原生语法就能解决你的问题~
内容的提问来源于stack exchange,提问作者Simas Paškauskas
相关产品推荐
相关产品推荐

