假设我有这个:
class whatever(object):
def __init__(self):
pass
和这个功能:
def create_object(type_name):
# create an object of type_name
我希望能够像这样调用create_object
:
inst = create_object(whatever)
并获取whatever
的实例。我认为这应该是可行的而不使用eval
,我想知道如何做到这一点。请注意我使用字符串作为create_object
的参数 NOT 。
答案 0 :(得分:7)
最明显的方式:
def create_object(type_name):
return type_name()
答案 1 :(得分:5)
def create_object(typeobject):
return typeobject()
正如你明确地说,create_object
的arg并不是一个字符串,我认为它本身就是一个类型对象,就像你给出的create_object(whatever)
示例一样,其中whatever
确实是类型本身。
答案 2 :(得分:2)
如果我理解正确,你想要的是:
def create_object(type_name, *args):
# create an object of type_name
return type_name(*args)
inst = create_object(whatever)
我真的不知道为什么你想要做到这一点,但是听到你的理由,你有什么理由需要这样的结构。
答案 3 :(得分:2)
def create_object(type_name):
return type_name()
你当然可以完全跳过这个功能并像这样创建whatever
的实例:
inst = whatever()