草庐IT

Decorator

全部标签

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

Python functools.wraps 等价于类

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

python - 如何在 python 抽象类中创建抽象属性

在下面的代码中,我创建了一个基础抽象类Base。我希望从Base继承的所有类都提供name属性,所以我将此属性设为@abstractmethod。然后我创建了一个Base的子类,称为Base_1,它旨在提供一些功能,但仍保持抽象。Base_1中没有name属性,但是python将那个类的对象instatin没有错误。如何创建抽象属性?fromabcimportABCMeta,abstractmethodclassBase(object):__metaclass__=ABCMetadef__init__(self,strDirConfig):self.strDirConfig=strDi

python - 如何在 python 抽象类中创建抽象属性

在下面的代码中,我创建了一个基础抽象类Base。我希望从Base继承的所有类都提供name属性,所以我将此属性设为@abstractmethod。然后我创建了一个Base的子类,称为Base_1,它旨在提供一些功能,但仍保持抽象。Base_1中没有name属性,但是python将那个类的对象instatin没有错误。如何创建抽象属性?fromabcimportABCMeta,abstractmethodclassBase(object):__metaclass__=ABCMetadef__init__(self,strDirConfig):self.strDirConfig=strDi