Учитывая тип класса, как мне создать экземпляр в Python? - PullRequest
0 голосов
/ 21 сентября 2009

Допустим, у меня есть это:

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.

Ответы [ 4 ]

7 голосов
/ 21 сентября 2009

Самый очевидный способ:

def create_object(type_name):
    return type_name()
5 голосов
/ 21 сентября 2009
def create_object(typeobject):
  return typeobject()

Поскольку вы так явно говорите, что arg для create_object НЕ предназначено быть строкой, я предполагаю, что это сам объект типа, как в приведенном вами примере create_object(whatever), в котором whatever это действительно сам тип.

2 голосов
/ 21 сентября 2009
def create_object(type_name):
   return type_name()

Вы, конечно, можете вообще пропустить функцию и создать экземпляр whatever следующим образом:

inst = whatever()
2 голосов
/ 21 сентября 2009

Если я правильно понимаю, что вы хотите:

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

inst = create_object(whatever)

Я действительно не знаю почему вы хотите это сделать, но было бы интересно услышать от вас, каковы ваши причины для такой конструкции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...