我用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
但我不知道是什麼。
使用'class Form(object):'來創建一個閃亮的漂亮的新式類,而不是Python 2爲了兼容性而強制拖拽的笨拙的舊式遺留類,一切都會好的。 Python 3中最大的改進就是最終擺脫那些可怕的殭屍世界 - 舊式類(在Python 3中,你的代碼工作正常[[raise語句語法除外]])。 – 2010-04-08 14:20:11