3
我想要做的是這樣的:是否有可能擁有帶參數的Python類裝飾器?
@add_cache(cache_this, cache_that, cache_this_and_that)
class MyDjangoModel(models.Model):
blah
但是,因爲它似乎是第一個參數是隱含的實際類對象失敗。有沒有可能解決這個問題,還是我不得不使用醜陋的語法,而不是這個美麗的語法?
我想要做的是這樣的:是否有可能擁有帶參數的Python類裝飾器?
@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)
...
的例子假設你只是想在裝飾類設置一些屬性。你當然可以用三個參數做別的事情。
編寫一個可調用的函數,返回一個合適的裝飾器。
在我看來,將嵌套函數的參數命名爲更具描述性的參數會更好,比如`f(cls)`。多一點解釋的方式也會很好。 – martineau 2010-11-24 10:12:16