python - 将单个装饰器应用于多个函数

标签 python decorator

我搜索过这个,但我看到的结果恰恰相反:将多个装饰器应用于单个函数。

我想简化这个模式。有没有办法将这个单个装饰器应用于多个函数?如果没有,我如何重写上面的内容以减少重复?

from mock import patch

@patch('somelongmodulename.somelongmodulefunction')
def test_a(patched):
    pass  # test one behavior using the above function

@patch('somelongmodulename.somelongmodulefunction')
def test_b(patched):
    pass  # test another behavior

@patch('somelongmodulename.somelongmodulefunction')
def test_c(patched):
    pass  # test a third behavior
from mock import patch

patched_name = 'somelongmodulename.somelongmodulefunction'

@patch(patched_name)
def test_a(patched):
    pass  # test one behavior using the above function

@patch(patched_name)
def test_b(patched):
    pass  # test another behavior

@patch(patched_name)
def test_c(patched):
    pass  # test a third behavior

最佳答案

如果你只想让“long”函数调用一次并用结果修饰所有三个函数,就这样做吧。

my_patch = patch('somelongmodulename.somelongmodulefunction')

@my_patch
def test_a(patched):
    pass

@my_patch
def test_b(patched):
    pass

关于python - 将单个装饰器应用于多个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30563807/

相关文章:

python - 如何在python中装饰一个生成器

python - 使用类装饰器实现后期初始化

python - 使用 dataframe.shift() 时 Pandas 表现得很奇怪

python - 在Elasticsearch中可能存在或不存在字段的情况下如何搜索

python - 从 python 脚本启动 vim 并结束脚本

python - psycopg2 "IndexError: tuple index out of range"使用带有参数元组的 '%' 之类的运算符时出错

python - 如何找出我的 Mac 上安装了哪些 Python 库?

python-3.x - 如何检查打印语句中是否存在变量

python - 类装饰器与函数装饰器

python - 为什么这个函数装饰器失败了?