Я работаю над расширением Flask, которое добавляет поддержку CouchDB в Flask. Чтобы было проще, я подклассифицировал couchdb.mapping.Document
, поэтому методы store
и load
могут использовать текущую локальную базу данных. Прямо сейчас мой код выглядит так:Вызов методов класса суперкласса в Python
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_
(даже если они задокументированы). У кого-нибудь есть более элегантный способ справиться с этим?
Спасибо. Как «супер» работает всегда было немного непрозрачно для меня. – LeafStorm