草庐IT

decorator

全部标签

python - 如何在 django 中编写自定义装饰器?

问题-@is_premium_userdefsample_view:.............我希望只有网站的高级用户才能访问某些View。以及如何在我的项目中的各种应用程序中使用这个装饰器? 最佳答案 玩弄了上面的各种链接,但无法让它们工作,然后遇到了我改编的这个非常简单的链接。http://code.activestate.com/recipes/498217-custom-django-login_required-decorator/fromfunctoolsimportwrapsfromdjango.httpimportH

python - 如何从 Python 中的函数中去除装饰器

假设我有以下内容:defwith_connection(f):defdecorated(*args,**kwargs):f(get_connection(...),*args,**kwargs)returndecorated@with_connectiondefspam(connection):#Dosomething我想测试spam功能,而无需经历设置连接(或装饰器正在做的任何事情)的麻烦。给定spam,我如何从中剥离装饰器并获得底层的“未装饰”功能? 最佳答案 这个问题有一些更新。如果您使用的是Python3,并且@functo

python - 如何从 Python 中的函数中去除装饰器

假设我有以下内容:defwith_connection(f):defdecorated(*args,**kwargs):f(get_connection(...),*args,**kwargs)returndecorated@with_connectiondefspam(connection):#Dosomething我想测试spam功能,而无需经历设置连接(或装饰器正在做的任何事情)的麻烦。给定spam,我如何从中剥离装饰器并获得底层的“未装饰”功能? 最佳答案 这个问题有一些更新。如果您使用的是Python3,并且@functo

Python - 所有内置装饰器是什么?

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭6年前。Improvethisquestion我知道@staticmethod、@classmethod和@property,但只是通过零散的文档。Python中内置的所有函数装饰器是什么?是在文档中吗?是否在某处维护了最新列表? 最佳答案 我不这么认为。装饰器与普通函数没有区别,你只是用一种更花哨的方式来调用它们。要找到所有这些,请尝试搜索Bui

Python - 所有内置装饰器是什么?

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭6年前。Improvethisquestion我知道@staticmethod、@classmethod和@property,但只是通过零散的文档。Python中内置的所有函数装饰器是什么?是在文档中吗?是否在某处维护了最新列表? 最佳答案 我不这么认为。装饰器与普通函数没有区别,你只是用一种更花哨的方式来调用它们。要找到所有这些,请尝试搜索Bui

python - 我可以在包装函数之前修补 Python 装饰器吗?

我有一个带有装饰器的函数,我正在尝试在PythonMock的帮助下进行测试图书馆。我想使用mock.patch将真正的装饰器替换为只调用函数的模拟“绕过”装饰器。我想不通的是如何在真正的装饰器包装函数之前应用补丁。我在补丁目标上尝试了一些不同的变体,并对补丁和导入语句重新排序,但没有成功。有什么想法吗? 最佳答案 需要注意的是,这里的几个答案会为整个测试session而不是单个测试实例修补装饰器;这可能是不可取的。以下是如何修补仅通过单个测试持续存在的装饰器。我们的单元要使用不受欢迎的装饰器进行测试:#app/uut.pyfroma

python - 我可以在包装函数之前修补 Python 装饰器吗?

我有一个带有装饰器的函数,我正在尝试在PythonMock的帮助下进行测试图书馆。我想使用mock.patch将真正的装饰器替换为只调用函数的模拟“绕过”装饰器。我想不通的是如何在真正的装饰器包装函数之前应用补丁。我在补丁目标上尝试了一些不同的变体,并对补丁和导入语句重新排序,但没有成功。有什么想法吗? 最佳答案 需要注意的是,这里的几个答案会为整个测试session而不是单个测试实例修补装饰器;这可能是不可取的。以下是如何修补仅通过单个测试持续存在的装饰器。我们的单元要使用不受欢迎的装饰器进行测试:#app/uut.pyfroma

python - 从装饰器访问 self

在unittest的setUp()方法中,我设置了一些self变量,稍后在实际测试中会引用这些变量。我还创建了一个装饰器来做一些日志记录。有没有一种方法可以让我从装饰器中访问那些self变量?为简单起见,我发布此代码:defdecorator(func):def_decorator(*args,**kwargs):#accessafromTestSamplefunc(*args,**kwargs)return_decoratorclassTestSample(unittest.TestCase):defsetUp(self):self.a=10deftearDown(self):#te

python - 从装饰器访问 self

在unittest的setUp()方法中,我设置了一些self变量,稍后在实际测试中会引用这些变量。我还创建了一个装饰器来做一些日志记录。有没有一种方法可以让我从装饰器中访问那些self变量?为简单起见,我发布此代码:defdecorator(func):def_decorator(*args,**kwargs):#accessafromTestSamplefunc(*args,**kwargs)return_decoratorclassTestSample(unittest.TestCase):defsetUp(self):self.a=10deftearDown(self):#te

Python functools.wraps 等价于类

使用类定义装饰器时,如何自动传递__name__、__module__和__doc__?通常,我会使用来自functools的@wraps装饰器。这是我为一个类所做的(这不完全是我的代码):classmemoized:"""Decoratorthatcachesafunction'sreturnvalueeachtimeitiscalled.Ifcalledlaterwiththesamearguments,thecachedvalueisreturned,andnotre-evaluated."""def__init__(self,func):super().__init__()se