You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

类能否采用类似可迭代列表的赋值解包方式批量创建实例?

解决方案

你可以用列表推导式或者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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 10:20:12