正如我在this 上一篇文章中提到的。我正在尝试创建一个装饰器,它执行以下操作:
装饰类表示基于文档的数据库(如 CouchDB 或 MongoDB)中的文档。 Decorator 接受 on 参数,该参数是此类数据库的连接器实例。模型类(在此示例中为用户)会自动将未定义的属性映射到数据库中的字段。
现在我有点卡住了:-/ 提到的东西都在工作。但现在我不能从模型类中调用任何方法。我收到以下错误。
class Connector(object):
def readvar(self, var):
data = {"emailAddress":"jack.bauer@ctu.org", "lastName":"Bauer"}
return data[var]
class DocumentDB(object):
def __init__(self,connector):
self.connector = connector
def __call__(self, *args, **kargs):
_c = self.connector
class TransparentAttribute:
def __getattr__(self, attrname):
try:
return _c.readvar(attrname)
except:
return getattr(args[0], attrname)
return TransparentAttribute
c = Connector()
@DocumentDB(c)
class User(object):
username = "JackBauer"
def doSomething(self):
print "bla bla"
def doSomethingElse(self):
pass
def myfunc(self):
print "afadsadsf adsf asdf asdf"
u = User()
u.myfunc() # Does not work!!!
print u.emailAddress
print u.lastName
print u.username
【问题讨论】:
您能否显示错误的完整回溯,包括它发生的行?
@DavidRobinson 我运行了相同的代码,得到了简单的Traceback (most recent call last): File "<module1>", line 52, in <module> TypeError: unbound method myfunc() must be called with User instance as first argument (got nothing instead)
(在线u.myfunc()
)
标签:
python
class
methods
couchdb
decorator
本文链接:http://task.lmcjl.com/news/6274.html