Ich arbeite an einer Flask-Erweiterung, die CouchDB-Unterstützung zu Flask hinzufügt. Um es einfacher zu machen, habe ich eine Subklasse couchdb.mapping.Document
so dass die store
y load
Methoden können die aktuelle thread-lokale Datenbank verwenden. Im Moment sieht mein Code wie folgt aus:
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)
Der Kürze halber habe ich einiges weggelassen, aber das ist der wichtige Teil. Wenn ich jedoch versuche, diese Methode aufzurufen, erhalte ich aufgrund der Funktionsweise von classmethod die Fehlermeldung
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)
Ich habe getestet, den Aufruf durch mapping.Document.load.im_func(cls, db or g.couch, id)
und es funktioniert, aber ich bin nicht besonders glücklich über den Zugriff auf die interne im_
Attribute (auch wenn sie dokumentiert sind). Hat jemand einen eleganteren Weg, dies zu behandeln?