问题标签 [decorator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - functools.wraps 有什么作用?
在对另一个问题的答案的评论中,有人说他们不确定functools.wraps
在做什么。所以,我问这个问题,以便在 StackOverflow 上记录它以供将来参考:究竟是functools.wraps
做什么的?
python - 为 admin_only 装饰器获取重定向循环
我制作了这个装饰器,它会导致无限重定向循环。
问题是这样的:
它似乎是一个完全有效的 URL。那么为什么它不能正确重定向呢?
python - 装饰器在调用它装饰的函数之前运行?
举个例子:
我遇到的问题是,@get_booking decorator
甚至在我调用我正在装饰的函数之前就调用了。
启动时输出:
我什至还没有调用此时装饰的函数。
我刚刚开始使用装饰器,所以也许我错过了一些东西。
c# - c# windows-services - 如何处理日志记录异常?
我正在创建一个 Windows 服务。当发生异常时,我会适当地处理它并创建一个日志。我正在使用装饰器模式,因为人们查看这些日志的方式有很多种。我有一个电子邮件记录器、一个文件记录器和一个 Windows 事件记录器,它们都继承自实现 ILogger 的 LoggingDecorator。因此,没有记录器知道任何其他记录器。
我的问题是:我应该如何处理日志记录异常?
如果写入文件失败或发送电子邮件失败,我该怎么办?我想用其他记录器记录初始日志内容,但是如何处理记录异常?它不也取决于构造函数中记录器的顺序吗?
现在,我只是用空的 catch(Exception) 语句包装 try/catch 块,这感觉很脏,让 FxCop 对我大喊大叫。然而,这是那些“取决于”的时刻之一吗?
(WindowsEventLogger 中有问题的代码)
(服务构造函数中的代码)
design-patterns - 代理、装饰器、适配器和桥接模式有何不同?
我在看代理模式,对我来说,它看起来很像装饰器、适配器和桥接模式。我是不是误会了什么?有什么不同?为什么我要使用代理模式而不是其他模式?您过去是如何在现实世界的项目中使用它们的?
python - Python 中的 []-esque 装饰器语法是什么意思?
这是 TurboGears 1.0.6 中的一段代码:
我不知道在函数定义之前放置一个列表会如何影响它。
在 dispatch.generic 的文档字符串中,它提到:
请注意,当使用较旧的 Python 版本时,您必须使用 '[dispatch.generic()]' 而不是 '@dispatch.generic()'。
好的,所以这显然是一种在 Python 的预装饰器版本中获得类似装饰器的行为的方法,但它到底是如何工作的呢?
python - @measured 是标准的装饰器吗?它在哪个图书馆?
在这篇博客文章中,他们使用了以下构造:
该@measured
指令似乎不适用于原始 python。它是什么?
更新:我从 Triptych 看到这@something
是有效的,但我在哪里可以找到@measured
,它是在某个库中,还是这个博客的作者使用了他自己的私人代码库中的东西?
design-patterns - 为什么将装饰器设计模式命名为“装饰器”?
任何人都可以解释为什么选择“装饰器”这个名称来表示装饰器设计模式所传达的功能吗?
我一直觉得这个名字很有误导性,因为装饰器和标记界面的用途听起来与我非常相似。然而,虽然标记并没有真正“做任何事情”,但装饰器确实可以。但对我来说,装饰一词意味着被动,而这种用于添加功能的模式并非如此。
python - Python - 所有内置装饰器是什么?
我知道@staticmethod
、@classmethod
和@property
,但仅通过分散的文档知道。Python 中内置的所有函数装饰器是什么?是在文档中吗?是否在某处维护了最新列表?
python - 验证子类中的 Python 参数
我正在尝试验证一些 python 参数。在我们在 Python 3.0 中获得新的静态类型之前,最好的方法是什么。
这是我正在尝试的示例:
正如您所看到的,装饰器很好地对我的类的输入进行类型检查,但是我必须为第二个类定义所有参数,当我有多个继承级别时,这会变得非常讨厌。我可以使用 kwargs 取得一些成功,但它不如上面的类型检查方法那么好。
本质上,我想从 kwargs 列表中弹出一个参数并检查它的类型,然后将其余部分传递给它的父级,但是随着规模的扩大,以一种非常灵活和干净的方式执行此操作。
有什么建议么?