python-decorators相关内容
我很难找到在装饰器函数中引用类实例的方法. 导入json导入时间导入系统从 PyQt5.QtCore 导入 *从 PyQt5.QtWidgets 导入 *从 main_UI 导入 Ui_ApplicationWindow从松弛导入 RTMClient类工人线程(QThread):完成 = pyqtSignal(str)def __init__(self):QThread.__init__(sel
..
将文档应用到多分派函数 我正在使用 multipledispatch 包,以类似于下面的示例代码的方式.当我在 Python 命令行中请求 help(my_add) 时,我希望能够看到 docstring 文本,但我看到的只是有关装饰器的信息. Functools.wraps 必须是这样做的方式,但如何? 我查过functools.wraps,我确定这是我想要使用的.我找到了如何
..
我有一个像这样的备忘录装饰器: def memoize(obj):从 functools 导入包装缓存 = {}@wraps(obj)def memoizer(*args, **kwargs):如果 args 不在缓存中:缓存[args] = obj(*args, **kwargs)返回缓存[参数]返回记忆器 但是,我不确定这个函数是否正常工作,因为在我看来,每次调用装饰函数时,它都会将 ca
..
尝试了一段时间失败后,我正在这个神奇的网站上寻求帮助.现在解决我的问题:我想创建一个装饰器,将一个函数的执行时间( 在该函数执行期间)写到以下日志文件中: @log_time("log.txt",35)def some_function(...):...返回结果 和 来自functools导入包装的 def log_time(path_to_logfile,interval):..
..
Python装饰器是否与Java批注或诸如Spring AOP或Aspect J之类的相同或相似,或者从根本上不同? 解决方案 Python装饰器只是语法糖,用于将一个函数传递给另一个函数并用结果替换第一个函数: @decoratordef function():经过 是...的语法糖 def function():经过功能=装饰器(功能) 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返
..
我想知道是否有某种方法可以仅对类中的某些方法使用装饰器,例如,在下面的代码中,我希望 token_required 来装饰除POST之外的所有方法,如何我可以实现吗? Class UserAPI(MethodView):def token_required(view_method):@wraps(view_method)def装饰(* args,** kwargs):令牌=无如果request
..
我是python和flask的新手.我想为编写的api创建单元测试.我们已经使用 jwt 进行身份验证. 要进行单元测试,我不希望流程输入 @jwt_required 装饰器.除此之外,我还为该方法链接了其他一些装饰器. A()类:@jwt_required()@mandatory_fields_check@unlock_and_lock()def get(自身,地址,名称):.....
..
我想向我的端点添加一个 auth_required 装饰器.(请考虑这个问题是关于装饰器,而不是中间件) 所以一个简单的装饰器看起来像这样: def auth_required(func):def包装器(* args,** kwargs):如果user_ctx.get()为None:引发HTTPException(...)return func(* args,** kwargs)返回包装
..
当特定模块中的所有视图仅在获得用户授权时才可用,或者应该都进行相同的检查时,会发生很多情况. 如何避免在整个文件中重复注释? 解决方案 使用基于类的视图时,可以为所有这些视图创建基类/混合,以实现所需的功能(也可以使用
..
我有一些代码,只要遇到此类异常,我都希望从中获取电子邮件. try:f(** kwargs)例外,例如e:#给我发电子邮件给环境 我知道Python装饰器可以做到这一点,例如: @check_errordef f()@check_errordef g() 如果我希望模块中的每个代码默认都被包装怎么办?喜欢没有 @check_error 的 def f(),但是我仍然希望能够实现这一
..
在下面的代码片段中,在第1行和第2行创建了两个名为 div 的对象. python如何区分在相同作用域下创建的两个 div 对象? 在两个对象上都应用 id()时,将为相似的命名对象显示两个不同的地址.为什么会这样? def div(a,b):返回a/bprint(id(div))#id = 199 ...... 1640 ###########################
..
我有以下(简单的家庭级)问题:我将程序的状态保存在JSON文件中,并具有几个使用该“数据库"的功能.有些只需要加载数据库,有些则需要加载数据库,然后写回文件. 我想在这些功能上使用修饰符来集中数据库的读写.下面是我的代码的简化版本,具有两个功能:一个仅消耗数据库,另一个也对其进行修改.此代码有效并返回期望值(*) 请注意如何在装饰器和函数之间传递数据库( db ) def load
..
我正在另一个类的Instance方法中使用Decorator(类),如下所示: class decorator_with_arguments(object):def __init __(self,arg1 = 0,arg2 = 0,arg3 = 0):self.arg1 = arg1self.arg2 = arg2self.arg3 = arg3def __call __(self,f):pr
..
在Flask中,如何在装饰器中获取路由值(例如'/admin')?我需要根据使用的路由将某些字符串传递给数据库(它们都使用相同的装饰器). @ app.route('/admin')@decoratordef admin(数据):do_something(数据) 我找不到有关如何在Python中进行操作的信息.有可能吗? 解决方案 您可以定义一个新的装饰器,该装饰器获取当前的路径,
..
链接的主题(但不是重复的主题):上下文管理器将是合适的: 从contextlib导入 导入contextmanager导入时间@contextmanagerdef measuretime():开始= time.time()尝试:屈服最后:打印(time.time()-开始)与measuretime():做东西()
..
我在代码中多次使用一个库函数,该函数测试通过/失败条件并相应地执行不同的代码,但是由于某种原因,所找到的结果没有返回值;我想添加一个装饰器,以便可以在我的代码中调用它. 鉴于我无法编辑源文件,正确的方法是什么? 我该做些什么: def test_pass(param1,param2):external_function(param1,param2)如果(...):返回False别的
..
@property 是定义吸气剂的好方法.当属性是可变的时,可以使用返回的引用以不受类定义控制的方式来修改属性.我将用香蕉架作为激励类比,但是这个问题适用于包装容器的任何类. BananaStand类:def __init __():self._money = 0self._bananas = ['b1','b2']@财产def bananas(个体经营):返回self._bananasdef
..
我是Python的新手.因此,如果这是一个基本问题,请原谅我.我在Internet和SO上对此主题进行了研究,但找不到解释.我正在使用Anaconda 3.6发行版. 我正在尝试为属性创建一个简单的getter和setter.我将引导您解决我遇到的错误. class Person:def __init __(self,name):self.name =名称鲍勃=人('鲍勃·史密斯')打印
..
我试图使用Python装饰器来捕获异常并记录异常. import os.path进口壁垒类日志(对象):def __init __(self,f):打印"Inside __init __()"自我.f = fdef __call __(自己,* args):打印“内部__call __()"尝试:self.f(* args)除了例外:打印“对不起"@日志def testit(a,b,c):打印
..