我正在开发一个 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_
属性并不特别满意(即使它们已记录在案)。有没有人有更优雅的方式来处理这个?