我在 tipfy 中使用 PersonEditHandler 类来编辑Person实体。我有 形成了get()和post()方法,但是当我引用 self.person 时 (为了检查 get 方法是否按键找到现有的人),我明白了 '对象没有属性'错误。
这是因为我从未在 init 方法中初始化它,因为我继承自 RequestHandler 和 Jinja2Mixin 。但是,当我覆盖 init 时,我收到另一个错误:'TypeError: init ()正好接受1个参数(3个给定)'
以下是代码:
class PersonEditHandler(RequestHandler, Jinja2Mixin):
def __init__(self):
PersonEditHandler.__init__(self)
# ...or 'super(PersonEditHandler, self).__init__()'
self.person = None
我因多重继承而遇到麻烦吗?哪个最好 如何在tipfy中编辑检索到的记录而不创建新记录?
答案 0 :(得分:1)
我建议在前面加__init__
而不是添加一个类属性:
class PersonEditHandler(RequestHandler, Jinja2Mixin):
person = None
这样,当您访问从未在特定实例self.person
上设置的self
时,它将按照该类进行,您将获得{{1} }} 如预期的;当您设置 None
时,它会根据需要在实体上设置它。
一般情况下,使用mixins进行多重继承是正常的,但它会使self.person
和__new__
出现一些模糊的问题,正如您所注意到的那样(老实说我不知道是什么< / em> class抱怨在这里收到三个参数...虽然如果你展示完整的追溯会有所帮助,但是我刚才建议的问题更简单; - )。