【发布时间】:2021-08-04 06:28:39
【问题描述】:
我正在尝试了解如何动态创建 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)
提前感谢您的任何建议。
【问题讨论】:
-
您似乎希望在全局环境中拥有实例。你能不能把它们放在字典之类的容器里?如果是这样,那么
a = {name: Person(name) for name in people} -
感谢您的建议。这样做有什么好处?
-
确保所有东西都包含在一个容器中。它们可以很容易地访问。如果您必须在全局环境中拥有它们,那么只需在运行上述代码后执行
globals().update(a),现在您可以运行Emmy.name
标签: python-3.x class exec eval