gpt4 book ai didi

python - 使用不同的参数创建一个类的多个对象

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:08 25 4
gpt4 key购买 nike

我知道如何使用循环创建同一个类的多个对象,类似于此 How to create multiple class objects with a loop in python?但是,我想要的是不同的,因为每个对象都必须用不同的参数初始化我的程序现在从文件中读取所有信息(参数)并将它们存储在 python 字典中,如下所示:

objects={'obj1':['object1','Tom',10],'obj2':['object2','John',13]}

并且因为所需对象的数量取决于在文件中找到的信息..我想知道是否有一种方法可以自动创建(可能通过使用循环!)多个类对象并使用不同的参数初始化它们。而不是按如下方式声明它们:

obj1 = MyClass('object1','Tom',10)
obj2 = MyClass('object2','John',13)

.
.
.
etc

最佳答案

>>> objects={'obj1':['object1','Tom',10],'obj2':['object2','John',13]}
>>> instances = []
>>> for name, args in objects.items():
inst = MyClass(*args)
instances.append(inst)

或者直接:

>>> [MyClass(*args) for name, args in objects.items()]
[<MyClass: object1, Tom, 10>, <MyClass: object2, John, 13>]

或者更简单,忽略名称:

>>> [MyClass(*args) for args in objects.values()]
[<MyClass: object1, Tom, 10>, <MyClass: object2, John, 13>]

或返回字典(适用于 Python 2.7+)

>>> {name: MyClass(*args) for name, args in objects.items()}
{'obj1': <MyClass: object1, Tom, 10>, 'obj2': <MyClass: object2, John, 13>}

如果你有动态数量的参数来创建你的实例,这甚至会起作用(假设你的类构造函数可以处理这个可变数量 - 使用默认值)

使用itertools.starmap

>>> from itertools import starmap
>>> list(starmap(MyClass, objects.values())
[<MyClass: object1, Tom, 10>, <MyClass: object2, John, 13>]

关于python - 使用不同的参数创建一个类的多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24191981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com