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

时间:2009-09-21 17:49:28

标签: python oop

假设我有这个:

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

4 个答案:

答案 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()