我正在使用PersonEditHandler类在tipfy中编辑Person实体。我已经形成了get()和post()方法,但是当我引用self.person (为了检查get方法是否通过键找到了现有的person )时,我得到了一个'object‘没有属性’错误。
这是因为我从未在init方法中初始化它,因为我是从和Jinja2Mixin继承的。然而,当我重写init时,我会得到另一个错误:'TypeError:init__()只需要一个参数(3个给定)‘。
以下是代码:
class PersonEditHandler(RequestHandler, Jinja2Mixin):
def __init__(self):
PersonEditHandler.__init__(self)
# ...or 'super(PersonEditHandler, self).__init__()'
self.person = None 我是不是因为多重继承而有麻烦?在tipfy中编辑检索到的记录而不创建新记录的最佳方法是什么?
发布于 2010-08-01 17:04:00
我建议不要使用__init__,而是添加一个class属性:
class PersonEditHandler(RequestHandler, Jinja2Mixin):
person = None这样,当您访问一个从未在特定实例self.person上设置的self时,它将服从于类,您将按需要获得None;当您设置self.person时,它将按需要在实体上设置它。
一般来说,混合继承是可以的,但是它可能会给__new__和__init__带来一些模糊的问题,正如您已经注意到的(老实说,我不知道哪个类在这里抱怨收到了三个参数……尽管如果您展示了完整的跟踪功能,那么处理这个问题会更简单;-)。
https://stackoverflow.com/questions/3379084
复制相似问题