Оберните декоратор python другим декоратором
У меня есть общий вызов декоратора во всей моей кодовой базе Django:
@override_settings(
CACHES={
**settings.CACHES,
"default": generate_cache("default", dummy=False),
"throttling": generate_cache("throttling", dummy=False),
}
)
def test_something():
...
Код декоратора слишком многословен. Я бы хотел завернуть этот код в новый декоратор под названием @use_real_cache
, чтобы тестовая функция выглядела намного чище:
@use_real_cache
def test_something():
...
Как обернуть декоратор другим декоратором?
Просто присвойте ему значение:
use_real_cache = override_settings(
CACHES={
**settings.CACHES,
'default': generate_cache('default', dummy=False),
'throttling': generate_cache('throttling', dummy=False),
}
)
# …
@use_real_cache
def test_something():
# …
pass
По сути, это то, что происходит в первом примере кода из вопроса, за исключением того, что вы не присваиваете его (явной) переменной.