Как «создать объект»? - PullRequest
       29

Как «создать объект»?

0 голосов
/ 08 апреля 2010

Я написал функцию на Python:

def instantiate(c):
    if inspect.isclass(c): return c()
    elif isinstance(c, object): return c
    else: raise Exception, '%s is not an object or class.' % c

Теперь я хочу сделать наоборот: получить класс из уже созданного объекта, чтобы я мог создать его экземпляр с другими параметрами. Как я могу это сделать?


Тесты:

>>> f = Form()
>>> type(f)()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: instance() takes at least 1 argument (0 given)
>>> f.__class__()
<forms.Form instance at 0xb7f4d5cc>

Больше тестов:

>>> o = object()
>>> type(o)()
<object object at 0xb7f78478>
>>> o.__class__()
<object object at 0xb7f78480>

Кажется, работает для object, но не для Form класса:

class Form:
    def __init__(self, data={}, prefix='', action='', id=None):

Полагаю, это как-то связано с self, но я не знаю, что.

Ответы [ 2 ]

3 голосов
/ 08 апреля 2010

Чтобы получить класс х

x.__class__
2 голосов
/ 08 апреля 2010

Класс объекта c равен type(c).

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