Я работаю над расширением 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)
Я оставил некоторые для краткости, но это важная часть. Однако из-за того, как работает метод класса, когда я пытаюсь вызвать этот метод, я получаю сообщение об ошибке
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_
(даже если они задокументированы). У кого-нибудь есть более элегантный способ справиться с этим?