类能否采用类似可迭代列表的赋值解包方式批量创建实例?
解决方案
你可以用列表推导式或者map函数来批量创建实例,不用逐个手动赋值:
方法1:列表推导式
这是最直观的方式,遍历myList的每个子列表,自动创建对应实例:
myList = [[1, 2], [3, 4], [5, 6]] class myClass(): def __init__(self, a: int, b: int): self.a = a self.b = b def printAB(self): return self.a, self.b # 批量创建实例 class_instances = [myClass(*sub_list) for sub_list in myList] # 按需解包到单独变量(如果需要) classInstance0, classInstance1, classInstance2 = class_instances
方法2:map函数
用map配合匿名函数,把myClass应用到每个子列表上:
# 批量创建并直接解包 classInstance0, classInstance1, classInstance2 = map(lambda x: myClass(*x), myList)
为什么你的原写法会报错?
你之前的代码myClass(*list_instance0, *list_instance1, *list_instance2)是把所有子列表的元素合并成1,2,3,4,5,6传给myClass的构造函数,但__init__只接受2个参数;就算参数数量匹配,返回的也只是单个myClass实例,不是可迭代的集合,自然没法解包成多个变量,所以才会提示myClass不可迭代。
内容的提问来源于stack exchange,提问作者xQT314
相关产品推荐
相关产品推荐

