繁体   English   中英

用另一个装饰器包裹 python 装饰器

[英]Wrap python decorator with another decorator

我在我的 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

这基本上是问题的第一个代码示例中发生的情况,只是您没有将其分配给(显式)变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM