Я написал функцию на 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
, но я не знаю, что.