首页 > 解决方案 > 如何使用列表动态创建 Python 类实例?

问题描述

我试图了解如何动态创建 python 类的实例。

下面的简单示例显示了如何创建类实例

class Person:
   def __init__(self, name):
       self.name = name

emmy = Person("Emmy")
niels = Person("Niels")

print(emmy.name)
print(niels.name)

如果我想遍历一个列表来创建类实例,我该如何动态执行一个命令,就像

emmy = Person("Emmy")

我尝试使用 eval 或 exec 方法动态地执行此操作,以便我可以遍历列表并能够使用列表中的项目名称调用类实例名称。

class Person:
   def __init__(self, name):
       self.name = name


people = ["Emmy","Niels"]

for item in people:
    eval('item = Person(item)')

print(emmy.name)
print(niels.name)

在此先感谢您的任何建议。

标签: python-3.xclassexeceval

解决方案


我找到了一个解决方案,它创建了一个字符串变量以用作 exec 函数的命令。

class Person:
   def __init__(self, name):
       self.name = name


people = ["Emmy","Niels"]

for item in people:
    
    a = str(item) + ' = Person("' + str(item) + '")'
    exec(a)

print(Emmy.name)
print(Niels.name)

推荐阅读