如何批量创建Python类实例并自动传入参数?
批量创建类实例的解决方案
你可以通过批量收集输入+按组拆分的方式自动创建实例,不用手动写重复代码,下面是两种实用的实现方式:
方式一:固定创建指定数量的实例
如果已经确定要创建的实例个数(比如你的例子里是3个),可以先一次性收集对应数量的输入,再按每3个参数一组循环创建实例:
class A: def __init__(self, a, b, c): self.a = a self.b = b self.c = c # 设置要创建的实例数量 instance_num = 3 # 收集所有需要的输入(每个实例3个参数,总共instance_num*3个输入) all_inputs = [input().strip() for _ in range(instance_num * 3)] # 循环创建实例并存储到列表中 instances = [] for idx in range(instance_num): # 每次截取3个输入作为当前实例的参数 start = idx * 3 end = start + 3 current_args = all_inputs[start:end] instances.append(A(*current_args)) # 后续可以通过索引访问实例,比如instances[0]对应原来的ins1,instances[1]对应ins2
方式二:动态读取输入直到结束
如果不确定要创建多少个实例,想让程序读取所有输入直到用户终止(Windows按Ctrl+Z,Linux/macOS按Ctrl+D),可以用sys.stdin读取所有输入行,再按3个一组拆分:
import sys class A: def __init__(self, a, b, c): self.a = a self.b = b self.c = c # 读取所有非空的输入行 all_inputs = [line.strip() for line in sys.stdin if line.strip()] # 检查输入数量是否是3的倍数,避免参数不完整 if len(all_inputs) % 3 != 0: raise ValueError("输入的参数总数必须是3的倍数,每个实例需要3个参数") # 用列表推导式批量创建实例 instances = [A(*all_inputs[i:i+3]) for i in range(0, len(all_inputs), 3)]
关键说明
之前用循环没成功,大概率是没处理好参数分组和参数解包:
- 用
all_inputs[i:i+3]可以每次截取3个输入作为一组参数 - 传入类的时候用
*current_args把列表里的元素拆成单个参数,对应A(a,b,c)的调用方式
内容的提问来源于stack exchange,提问作者Rapithwin
相关产品推荐
相关产品推荐

