# decorator wrapper for _Parser()
def Parser(cls, cache = False):
def _fun(fun):
def _Fun(*arg, **kw):
# try get from cache
if cache and (len(arg) >= 1 or '_id' in kw):
_id = arg[0] if arg else kw['_id']
o = Cacher(cls).get(_id)
if o:
return o
ret = fun(*arg, **kw)
try:
ret = _Parser(ret, cls)
except Exception as e:
logging.exception('failed to parse')
return ret
return _Fun
return _fun
主要是为了对函数的返回值做解析并缓存
大概是这样用的
@Parser(Type, True)
def get_type(_id):
...
现在脑袋有点晕
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.