python-decorators相关内容

如何使用重载/调度装饰器记录 Python 函数?

将文档应用到多分派函数 我正在使用 multipledispatch 包,以类似于下面的示例代码的方式.当我在 Python 命令行中请求 help(my_add) 时,我希望能够看到 docstring 文本,但我看到的只是有关装饰器的信息. Functools.wraps 必须是这样做的方式,但如何? 我查过functools.wraps,我确定这是我想要使用的.我找到了如何 ..
发布时间:2021-06-12 20:40:41 Python

记忆装饰器保持存储的值

我有一个像这样的备忘录装饰器: def memoize(obj):从 functools 导入包装缓存 = {}@wraps(obj)def memoizer(*args, **kwargs):如果 args 不在缓存中:缓存[args] = obj(*args, **kwargs)返回缓存[参数]返回记忆器 但是,我不确定这个函数是否正常工作,因为在我看来,每次调用装饰函数时,它都会将 ca ..
发布时间:2021-06-02 19:27:17 Python

用装饰器记录执行时间

尝试了一段时间失败后,我正在这个神奇的网站上寻求帮助.现在解决我的问题:我想创建一个装饰器,将一个函数的执行时间( 在该函数执行期间)写到以下日志文​​件中: @log_time("log.txt",35)def some_function(...):...返回结果 和 来自functools导入包装的 def log_time(path_to_logfile,interval):.. ..
发布时间:2021-05-30 20:27:18 Python

Python Decorator与Java注解或具有Aspects的Java是否相同?

Python装饰器是否与Java批注或诸如Spring AOP或Aspect J之类的相同或相似,或者从根本上不同? 解决方案 Python装饰器只是语法糖,用于将一个函数传递给另一个函数并用结果替换第一个函数: @decoratordef function():经过 是...的语法糖 def function():经过功能=装饰器(功能) Java注释本身仅存储元数据,您 ..
发布时间:2021-05-18 19:52:37 Java开发

重试装饰器实现,重试未定义

我实现了以下重试装饰器. def retry(延迟= 10,重试= 4):def retry_decorator(f):@wraps(f)def f_retry(* args,** kwargs):重试时>1:尝试:返回f(* args,** kwargs)例外,例如e:msg =“异常:{},在{}秒后重试...'.format(e,delay)"打印(味精)时间.睡眠(延迟)重试-= 1返 ..
发布时间:2021-05-09 20:18:07 Python

仅将Flask MethodView装饰器应用于某些方法

我想知道是否有某种方法可以仅对类中的某些方法使用装饰器,例如,在下面的代码中,我希望 token_required 来装饰除POST之外的所有方法,如何我可以实现吗? Class UserAPI(MethodView):def token_required(view_method):@wraps(view_method)def装饰(* args,** kwargs):令牌=无如果request ..
发布时间:2021-05-08 19:36:24 Python

如何在python flask应用程序中进行单元测试时避免装饰器

我是python和flask的新手.我想为编写的api创建单元测试.我们已经使用 jwt 进行身份验证. 要进行单元测试,我不希望流程输入 @jwt_required 装饰器.除此之外,我还为该方法链接了其他一些装饰器. A()类:@jwt_required()@mandatory_fields_check@unlock_and_lock()def get(自身,地址,名称):..... ..
发布时间:2021-05-08 19:33:19 Python

默认情况下,将每个函数或类方法包装在Python模块中,而无需修饰每个

我有一些代码,只要遇到此类异常,我都希望从中获取电子邮件. try:f(** kwargs)例外,例如e:#给我发电子邮件给环境 我知道Python装饰器可以做到这一点,例如: @check_errordef f()@check_errordef g() 如果我希望模块中的每个代码默认都被包装怎么办?喜欢没有 @check_error 的 def f(),但是我仍然希望能够实现这一 ..
发布时间:2021-04-29 20:43:51 Python

具有相同名称的对象在python中引用了不同的id

在下面的代码片段中,在第1行和第2行创建了两个名为 div 的对象. python如何区分在相同作用域下创建的两个 div 对象? 在两个对象上都应用 id()时,将为相似的命名对象显示两个不同的地址.为什么会这样? def div(a,b):返回a/bprint(id(div))#id = 199 ...... 1640 ########################### ..
发布时间:2021-04-29 20:43:43 Python

* args是将参数传递给装饰函数或从装饰函数传递参数的正确方法吗?

我有以下(简单的家庭级)问题:我将程序的状态保存在JSON文件中,并具有几个使用该“数据库"的功能.有些只需要加载数据库,有些则需要加载数据库,然后写回文件. 我想在这些功能上使用修饰符来集中数据库的读写.下面是我的代码的简化版本,具有两个功能:一个仅消耗数据库,另一个也对其进行修改.此代码有效并返回期望值(*) 请注意如何在装饰器和函数之间传递数据库( db ) def load ..

从装饰器内部获取路由值

在Flask中,如何在装饰器中获取路由值(例如'/admin')?我需要根据使用的路由将某些字符串传递给数据库(它们都使用相同的装饰器). @ app.route('/admin')@decoratordef admin(数据):do_something(数据) 我找不到有关如何在Python中进行操作的信息.有可能吗? 解决方案 您可以定义一个新的装饰器,该装饰器获取当前的路径, ..
发布时间:2021-04-29 20:43:04 Python

装饰外部(库)功能的正确方法是什么?

我在代码中多次使用一个库函数,该函数测试通过/失败条件并相应地执行不同的代码,但是由于某种原因,所找到的结果没有返回值;我想添加一个装饰器,以便可以在我的代码中调用它. 鉴于我无法编辑源文件,正确的方法是什么? 我该做些什么: def test_pass(param1,param2):external_function(param1,param2)如果(...):返回False别的 ..
发布时间:2021-04-29 20:42:55 Python

如何使类属性不可变?

@property 是定义吸气剂的好方法.当属性是可变的时,可以使用返回的引用以不受类定义控制的方式来修改属性.我将用香蕉架作为激励类比,但是这个问题适用于包装容器的任何类. BananaStand类:def __init __():self._money = 0self._bananas = ['b1','b2']@财产def bananas(个体经营):返回self._bananasdef ..
发布时间:2021-04-29 20:42:49 Python

以下划线开头的变量作为属性装饰器

我是Python的新手.因此,如果这是一个基本问题,请原谅我.我在Internet和SO上对此主题进行了研究,但找不到解释.我正在使用Anaconda 3.6发行版. 我正在尝试为属性创建一个简单的getter和setter.我将引导您解决我遇到的错误. class Person:def __init __(self,name):self.name =名称鲍勃=人('鲍勃·史密斯')打印 ..
发布时间:2021-04-29 20:42:38 Python

Python中的Doctest和Decorators

我试图使用Python装饰器来捕获异常并记录异常. import os.path进口壁垒类日志(对象):def __init __(self,f):打印"Inside __init __()"自我.f = fdef __call __(自己,* args):打印“内部__call __()"尝试:self.f(* args)除了例外:打印“对不起"@日志def testit(a,b,c):打印 ..
发布时间:2021-04-29 20:42:27 Python