【发布时间】:2015-08-23 17:03:38
【问题描述】:
我有这个memoize 装饰器:
import functools
cache = {}
def memoize(obj):
@functools.wraps(obj)
def memoizer(*args, **kwargs):
if args not in cache:
cache[args] = obj(*args, **kwargs)
return cache[args]
return memoizer
它适用于类的任何方法。但是,与 @property 装饰器一起使用时会出现以下错误。
AttributeError: 'property' object has no attribute '__module__'
如何使其与类的 @property 方法一起使用?
提前致谢!
更新:
class QClass(object):
@memoize
@property
def positive(self):
return Predicate('positive')
【问题讨论】:
-
this post 有帮助吗?
-
我不确定。让我从那里尝试一些事情。
-
嗯,我猜这与 functools.wraps 如何在 module 上复制和其他事情有关。当你说你将它与@property 一起使用时,我能看到你正在做的事情的上下文吗?
标签: python