Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
给定类类型,如何在Python中创建实例?_Python_Oop - Fatal编程技术网

给定类类型,如何在Python中创建实例?

给定类类型,如何在Python中创建实例?,python,oop,Python,Oop,假设我有这个: class whatever(object): def __init__(self): pass 这个功能是: def create_object(type_name): # create an object of type_name 我希望能够像这样调用create\u对象: inst = create_object(whatever) inst = whatever() 并获取任何内容的实例。我认为这应该是可行的,不使用eval,我想知道如何做

假设我有这个:

class whatever(object):
   def __init__(self):
      pass
这个功能是:

def create_object(type_name):
   # create an object of type_name
我希望能够像这样调用
create\u对象

inst = create_object(whatever)
inst = whatever()
并获取
任何内容的实例。我认为这应该是可行的,不使用
eval
,我想知道如何做到这一点。请注意,我不是使用字符串作为
create\u object
的参数,最明显的方法是:

def create_object(type_name):
    return type_name()

如果我理解正确,您想要的是:

def create_object(type_name, *args):
    # create an object of type_name
    return type_name(*args)

inst = create_object(whatever)
我真的不知道你为什么要这样做,但如果你能告诉我你为什么需要这样一个结构,我会很感兴趣

def create_object(type_name):
   return type_name()
当然,您可以完全跳过该函数,并创建
任何内容的实例,如下所示:

inst = create_object(whatever)
inst = whatever()

正如你明确地说,arg to
create\u object
并不意味着是一个字符串,我假设它意味着类型对象本身,就像你给出的
create\u object(whatever)
示例中的
whatever
确实是类型本身。

eval
及其更丑陋、更卑鄙的兄弟,
exec
几乎不需要
eval
用于评估用户输入,只要您采取措施不使用appliaction
globals
locals
。您在读什么Python教程,@Geo?您的问题表明教程缺少重要信息。你读了哪一个?类只是Python中普通的一级对象,与其他变量共享相同的名称空间。