草庐IT

decorator

全部标签

python - 对象的工厂方法 - 最佳实践?

这是一个关于使用python从相同数据的不同形式创建类或类型的实例的最佳实践的问题。使用类方法更好还是完全使用单独的函数更好?假设我有一个用于描述文档大小的类。(注意:这只是一个示例。我想知道创建类实例的最佳方式不是描述文档大小的最佳方式。)classSize(object):"""Utilityobjectusedtodescribethesizeofadocument."""BYTE=8KILO=1024def__init__(self,bits):self._bits=bits@propertydefbits(self):returnfloat(self._bits)@prope

python - 如何在 Flask 中使用参数制作 python 装饰器函数(用于授权)

我在我的flask登录中使用了flask片段来检查用户是否已登录:fromfunctoolsimportwrapsdeflogged_in(f):@wraps(f)defdecorated_function(*args,**kwargs):ifsession.get('logged_in')isnotNone:returnf(*args,**kwargs)else:flash('Pleaseloginfirst.','error')returnredirect(url_for('login'))returndecorated_function我这样装饰View:@app.route('

python - 如何在 Flask 中使用参数制作 python 装饰器函数(用于授权)

我在我的flask登录中使用了flask片段来检查用户是否已登录:fromfunctoolsimportwrapsdeflogged_in(f):@wraps(f)defdecorated_function(*args,**kwargs):ifsession.get('logged_in')isnotNone:returnf(*args,**kwargs)else:flash('Pleaseloginfirst.','error')returnredirect(url_for('login'))returndecorated_function我这样装饰View:@app.route('

作为基类一部分的 Python 装饰器不能用于装饰继承类中的成员函数

Python装饰器使用起来很有趣,但由于参数传递给装饰器的方式,我似乎碰壁了。在这里,我将一个装饰器定义为基类的一部分(装饰器将访问类成员,因此它需要self参数)。classSubSystem(object):defUpdateGUI(self,fun):#functiondecoratordefwrapper(*args):self.updateGUIField(*args)returnfun(*args)returnwrapperdefupdateGUIField(self,name,value):ifnameinself.gui:iftype(self.gui[name])==

作为基类一部分的 Python 装饰器不能用于装饰继承类中的成员函数

Python装饰器使用起来很有趣,但由于参数传递给装饰器的方式,我似乎碰壁了。在这里,我将一个装饰器定义为基类的一部分(装饰器将访问类成员,因此它需要self参数)。classSubSystem(object):defUpdateGUI(self,fun):#functiondecoratordefwrapper(*args):self.updateGUIField(*args)returnfun(*args)returnwrapperdefupdateGUIField(self,name,value):ifnameinself.gui:iftype(self.gui[name])==

python - 将装饰器应用于导入的函数?

我要导入一个函数:fromrandomimportrandint然后对其应用装饰器:@decoratorrandint我想知道这是否有一些语法糖(就像我上面所说的那样),还是我必须按如下方式进行:@decoratordefrandintWrapper(*args):returnrandom.randint(*args) 最佳答案 装饰器只是用装饰版本替换函数对象的语法糖,其中装饰只是调用(传入原始函数对象)。换句话说,语法:@decorator_expressiondeffunction_name():#functionbody大致

python - 将装饰器应用于导入的函数?

我要导入一个函数:fromrandomimportrandint然后对其应用装饰器:@decoratorrandint我想知道这是否有一些语法糖(就像我上面所说的那样),还是我必须按如下方式进行:@decoratordefrandintWrapper(*args):returnrandom.randint(*args) 最佳答案 装饰器只是用装饰版本替换函数对象的语法糖,其中装饰只是调用(传入原始函数对象)。换句话说,语法:@decorator_expressiondeffunction_name():#functionbody大致

python - 如何在python中做一个条件装饰器

是否可以有条件地装饰函数。例如,我想用定时器函数(timeit)装饰函数foo()只有doing_performance_analysis是True(见伪代码下面)。ifdoing_performance_analysis:@timeitdeffoo():"""dosomething,timeitfunctionwillreturnthetimeittakes"""time.sleep(2)else:deffoo():time.sleep(2) 最佳答案 装饰器只是返回替换的可调用对象,可选地是相同的函数、包装器或完全不同的东西。因

python - 如何在python中做一个条件装饰器

是否可以有条件地装饰函数。例如,我想用定时器函数(timeit)装饰函数foo()只有doing_performance_analysis是True(见伪代码下面)。ifdoing_performance_analysis:@timeitdeffoo():"""dosomething,timeitfunctionwillreturnthetimeittakes"""time.sleep(2)else:deffoo():time.sleep(2) 最佳答案 装饰器只是返回替换的可调用对象,可选地是相同的函数、包装器或完全不同的东西。因

python - 获取装饰函数的名称?

这个问题在这里已经有了答案:Preservingsignaturesofdecoratedfunctions(8个回答)关闭4年前.这是我的装饰器:defcheck_domain(func):defwrapper(domain_id,*args,**kwargs):domain=get_object_or_None(Domain,id=domain_id)ifnotdomain:returnNonereturnfunc(domain_id,*args,**kwargs)returnwrapper这是一个包装好的函数:@check_domaindefcollect_data(domain