【发布时间】:2011-03-02 20:50:07
【问题描述】:
我正在开发一个向 Flask 添加 CouchDB 支持的 Flask 扩展。为了更容易,我对couchdb.mapping.Document 进行了子类化,因此store 和load 方法可以使用当前的线程本地数据库。现在,我的代码如下所示:
class Document(mapping.Document):
# rest of the methods omitted for brevity
@classmethod
def load(cls, id, db=None):
return mapping.Document.load(cls, db or g.couch, id)
为了简洁起见,我省略了一些,但这是重要的部分。但是,由于 classmethod 的工作方式,当我尝试调用此方法时,会收到错误消息
File "flaskext/couchdb.py", line 187, in load
return mapping.Document.load(cls, db or g.couch, id)
TypeError: load() takes exactly 3 arguments (4 given)
我测试了用mapping.Document.load.im_func(cls, db or g.couch, id) 替换调用,它有效,但我对访问内部im_ 属性并不特别满意(即使它们已记录在案)。有没有人有更优雅的方式来处理这个问题?
【问题讨论】:
标签: python superclass class-method