如何在python中动态创建一个类的实例?

2024-05-12 12:48:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有类名列表,希望动态创建它们的实例。例如:

names=[
'foo.baa.a',
'foo.daa.c',
'foo.AA',
 ....
]

def save(cName, argument):
 aa = create_instance(cName) # how to do it?
 aa.save(argument)

save(random_from(names), arg)

如何在Python中动态创建实例?谢谢!


Tags: 实例列表foonamessavedefcreateargument
3条回答

您可以使用python内置的eval()语句来实例化您的类。 像这样:

aa = eval(cName)()

注意!

使用eval是危险的,并且是基于代码注入的许多安全风险的关键。

这通常被称为反思或有时是自省。检查一个类似的问题,这些问题对您要做的事情有一个答案:

Does Python Have An Equivalent to Java Class forname

Can You Use a String to Instantiate a Class in Python

假设您已经使用

from [app].models import *

你要做的就是

klass = globals()["class_name"]
instance = klass()

相关问题 更多 >