我有一个带有3个实例属性a,b和c的类。
class Thing:
def __init__(self,a,b,c):
self.a = a
self.b = b
self.c = c
我想实例化该类的任意数量的对象,比方说5,并从列表中插入不同的属性:
a_attributes = [string.ascii_uppercase[i] for i in range(5)]
b_attributes = [i for i in range(5)]
c_attributes = ['Car','House','Boat','Tree','Pond']
直觉上,我认为我可以压缩属性列表以创建一个三元组列表,然后将每个元组传递给构造函数方法来创建每个对象,但这不起作用:
attribute_list = list(zip(a_attributes, b_attributes, c_attributes))
Things = [Thing(attributes) for attributes in attribute_list]
这会引发TypeError-可以理解的是,它会将元组视为1个参数。
我决定采用这种解决方案,该解决方案虽然有效,但感觉很不雅:
Things = [Thing(attributes[0], attributes[1], attributes[2]) for attribute in attributes_list]
是否有更好的方法来执行此操作,或者在我的整个方法中是否存在某些问题?