我想做的是:
@add_cache(cache_this, cache_that, cache_this_and_that)
class MyDjangoModel(models.Model):
blah
但失败是因为看起来第一个参数隐含了实际的类对象.有可能解决这个问题,还是我*使用丑陋的语法而不是这种美妙的语法?
解决方法:
您的arg_cache定义需要执行以下操作:
def arg_cache(cthis, cthat, cthisandthat):
def f(obj):
obj.cache_this = cthis
obj.cache_that = cthat
obj.thisandthat = cthisandthat
return obj
return f
@arg_cache(cache_this, cache_that, cache_this_and_that)
...
该示例假设您只想在装饰类上设置一些属性.你当然可以用这三个参数做其他事情.