草庐IT

python - 将装饰器应用于类中的每个方法?

我将装饰器@login_testuser应用于方法test_1():classTestCase(object):@login_testuserdeftest_1(self):print"test_1()"有没有一种方法可以将@login_testuser应用于以"test_"为前缀的类的每个方法?换句话说,装饰器将应用于下面的test_1()、test_2()方法,但不适用于setUp()。classTestCase(object):defsetUp(self):passdeftest_1(self):print"test_1()"deftest_2(self):print"test_

python - 打印函数调用详细信息(参数名称和有效值)的装饰器?

我想创建一个函数,作为另一个函数的装饰器将打印该函数调用的详细信息——参数名称和有效值。我当前的实现是这样的。defdescribeFuncCall(func):"""Decoratortoprintfunctioncalldetails.parametersnamesandeffectivevalues."""defwrapper(*func_args,**func_kwargs):print"func_code.co_varnames=",func.func_code.co_varnamesprint"func_code.co_argcount=",func.func_code.c

python - 什么是 "@"在 Python 函数之上的装饰器?

这个问题在这里已经有了答案:HowdoImakefunctiondecoratorsandchainthemtogether?(19个回答)关闭15天前。社区在15天前审查了是否重新打开此问题并使其关闭:原始关闭原因未解决抱歉,这是一个非常宽泛的问题。下面的代码是从网上找到的一些片段。我感兴趣的关键是以@protected开头的行——我想知道这是做什么的以及它是如何做到的?它似乎在执行do_upload_ajax函数之前检查是否有有效用户登录。这看起来是一种非常有效的用户身份验证方法。我不明白这个@函数的机制-有人可以引导我朝着正确的方向解释这将如何在现实世界中实现吗?请Python3

java - Java中的装饰器

我看到装饰器example在Python中:defmakebold(fn):defwrapped():return""+fn()+""returnwrappeddefmakeitalic(fn):defwrapped():return""+fn()+""returnwrapped@makebold@makeitalicdefhello():return"helloworld"printhello()##returnshelloworld我很好奇它是如何在Java中实现的,所以我搜索并获得了一些使用DecoratorDesignPattern的示例.publicclassMain{pub

python - Flask 测试 - 为什么覆盖范围不包括导入语句和装饰器?

我的测试清楚地执行了每个功能,也没有未使用的导入。然而,根据覆盖率报告,62%的代码从未在以下文件中执行:有人可以指出我可能做错了什么吗?下面是我如何初始化测试套件和覆盖范围:cov=coverage(branch=True,omit=['website/*','run_test_suite.py'])cov.start()try:unittest.main(argv=[sys.argv[0]])except:passcov.stop()cov.save()print"\n\nCoverageReport:\n"cov.report()print"HTMLversion:"+os.pa

Python:使用装饰器 v/s mixins?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion我已经了解装饰器和混入的基础知识。装饰器在不改变同一类的其他对象实例的情况下向对象添加新功能,而混合是一种多重继承,用于从多个父类继承。这是否意味着当您只需要修改单个对象实例时应该使用装饰器,而当您需要一个全新的对象类时应该使用混合?或者,还有什么我可能会遗漏的吗?两者在现实生活中的用例有哪些?

python - 将带有参数的 Python 装饰器合并为一个装饰器

这个问题在这里已经有了答案:CanIcombinetwodecoratorsintoasingleoneinPython?(6个答案)关闭4年前。我正在使用来自两个不同库的两个不同装饰器。比方说:@decorator1(param1,param2)和@decorator2(param3,param4)。我经常在许多功能中使用:frommoduleAimportdecorator1frommoduleBimportdecorator2@decorator2(foo='param3',bar='param4')@decorator1(name='param1',state='param2'

python - Flask:验证 JSON 和 JSON Schema 的装饰器

我有一个Flask应用程序,其调用需要JSON负载。在处理每个调用之前,我有一个两步错误检查过程:断言负载是一个有效的JSON断言JSON负载符合特定模式以下列方式实现:@app.route('/activate',methods=['POST'])defactivate():request_id=request.__hash__()#AssertthatthepayloadisavalidJSONtry:input=request.jsonexceptBadRequest,e:msg="payloadmustbeavalidjson"returnjsonify({"error":ms

具有多处理功能的 Python 装饰器失败

我想在随后传递给多处理池的函数上使用装饰器。但是,代码失败并显示“PicklingError:无法腌制:属性查找__builtin__.functionfailed”。我不太明白为什么它在这里失败了。我确信这很简单,但我找不到。下面是一个最小的“工作”示例。我认为使用functools函数就足以让它工作了。如果我注释掉函数装饰,它可以正常工作。我在这里误解了multiprocessing是什么?有什么方法可以使它起作用吗?编辑:在添加可调用类装饰器和函数装饰器之后,函数装饰器按预期工作。可调用类装饰器继续失败。可调用类版本如何防止它被pickle?importrandomimportm

装饰器的 Python 3 类型提示

考虑以下代码:fromtypingimportCallable,AnyTFunc=Callable[...,Any]defget_authenticated_user():return"John"defrequire_auth()->Callable[TFunc,TFunc]:defdecorator(func:TFunc)->TFunc:defwrapper(*args,**kwargs)->Any:user=get_authenticated_user()ifuserisNone:raiseException("Don't!")returnfunc(*args,**kwargs)r