我正在尝试从webpy框架继承web.form.Form以更改行为(它从表中呈现)。我试着这样做:
class SyssecForm(web.form.Form):
def __init__(self, *inputs, **kw):
super(SyssecForm, self).__init__(*inputs, **kw)
def render(self):
out='<div id="form"> '
for i in self.inputs:
html = utils.safeunicode(i.pre) + i.render() + self.rendernote(i.note) + utils.safeunicode(i.post)
out += "%s"%(html)
out += '"<div id="%s"> %s %s</div>'% (i.id, net.websafe(i.description), html)
out+= "</div>"
return out
现在我收到此错误object.__init__() takes no parameters
:
答案 0 :(得分:3)
完全删除__init__
方法,因为无论如何你还没有在那里做任何事情。
答案 1 :(得分:2)
该消息告诉您需要知道的所有信息。超类是对象,它的构造函数不带参数。因此,不要将构造函数的参数传递给它,因为它不知道如何处理它们。
这样称呼:
super(SyssecForm, self).__init__()
答案 2 :(得分:1)
这对我有用(web.py 0.37):
import web
class SyssecForm(web.form.Form):
def __init__(self, *inputs, **kw):
super(SyssecForm, self).__init__(*inputs, **kw)
def render(self):
out='<div id="form"> '
for i in self.inputs:
html = web.utils.safeunicode(i.pre) + i.render() + self.rendernote(i.note) + web.utils.safeunicode(i.post)
out += "%s"%(html)
out += '"<div id="%s"> %s %s</div>'% (i.id, web.net.websafe(i.description), html)
out+= "</div>"
return out
form = SyssecForm(web.form.Textbox("test"))
print form.render()
您的问题是因为您可能已经过时了web.py,因为web.form.Form现在继承自object
:https://github.com/webpy/webpy/commit/766709cbcae1369126a52aee4bc3bf145b5d77a8
Super仅适用于新式课程。您必须在类delcaration中添加object
,如下所示:class SyssecForm(web.form.Form, object):
或者您必须更新web.py。