问题标签 [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.

0 投票
7 回答
195993 浏览

python - functools.wraps 有什么作用?

在对另一个问题的答案的评论中,有人说他们不确定functools.wraps在做什么。所以,我问这个问题,以便在 StackOverflow 上记录它以供将来参考:究竟是functools.wraps做什么的?

0 投票
4 回答
397 浏览

python - 为 admin_only 装饰器获取重定向循环

我制作了这个装饰器,它会导致无限重定向循环。

问题是这样的:

它似乎是一个完全有效的 URL。那么为什么它不能正确重定向呢?

0 投票
4 回答
9784 浏览

python - 装饰器在调用它装饰的函数之前运行?

举个例子:

我遇到的问题是,@get_booking decorator甚至在我调用我正在装饰的函数之前就调用了。

启动时输出:

我什至还没有调用此时装饰的函数。

我刚刚开始使用装饰器,所以也许我错过了一些东西。

0 投票
3 回答
3976 浏览

c# - c# windows-services - 如何处理日志记录异常?

我正在创建一个 Windows 服务。当发生异常时,我会适当地处理它并创建一个日志。我正在使用装饰器模式,因为人们查看这些日志的方式有很多种。我有一个电子邮件记录器、一个文件记录器和一个 Windows 事件记录器,它们都继承自实现 ILogger 的 LoggingDecorator。因此,没有记录器知道任何其他记录器。

我的问题是:我应该如何处理日志记录异常?

如果写入文件失败或发送电子邮件失败,我该怎么办?我想用其他记录器记录初始日志内容,但是如何处理记录异常?它不也取决于构造函数中记录器的顺序吗?

现在,我只是用空的 catch(Exception) 语句包装 try/catch 块,这感觉很脏,让 FxCop 对我大喊大叫。然而,这是那些“取决于”的时刻之一吗?

(WindowsEventLogger 中有问题的代码)

(服务构造函数中的代码)

0 投票
13 回答
82607 浏览

design-patterns - 代理、装饰器、适配器和桥接模式有何不同?

我在看代理模式,对我来说,它看起来很像装饰器、适配器和桥接模式。我是不是误会了什么?有什么不同?为什么我要使用代理模式而不是其他模式?您过去是如何在现实世界的项目中使用它们的?

0 投票
2 回答
582 浏览

python - Python 中的 []-esque 装饰器语法是什么意思?

这是 TurboGears 1.0.6 中的一段代码:

我不知道在函数定义之前放置一个列表会如何影响它。

在 dispatch.generic 的文档字符串中,它提到:

请注意,当使用较旧的 Python 版本时,您必须使用 '[dispatch.generic()]' 而不是 '@dispatch.generic()'。

好的,所以这显然是一种在 Python 的预装饰器版本中获得类似装饰器的行为的方法,但它到底是如何工作的呢?

0 投票
3 回答
470 浏览

python - @measured 是标准的装饰器吗?它在哪个图书馆?

这篇博客文章中,他们使用了以下构造:

@measured指令似乎不适用于原始 python。它是什么?

更新:我从 Triptych 看到这@something是有效的,但我在哪里可以找到@measured,它是在某个库中,还是这个博客的作者使用了他自己的私人代码库中的东西?

0 投票
4 回答
1268 浏览

design-patterns - 为什么将装饰器设计模式命名为“装饰器”?

任何人都可以解释为什么选择“装饰器”这个名称来表示装饰器设计模式所传达的功能吗?

我一直觉得这个名字很有误导性,因为装饰器和标记界面的用途听起来与我非常相似。然而,虽然标记并没有真正“做任何事情”,但装饰器确实可以。但对我来说,装饰一词意味着被动,而这种用于添加功能的模式并非如此。

0 投票
4 回答
34214 浏览

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

我知道@staticmethod@classmethod@property,但仅通过分散的文档知道。Python 中内置的所有函数装饰器是什么?是在文档中吗?是否在某处维护了最新列表?

0 投票
2 回答
713 浏览

python - 验证子类中的 Python 参数

我正在尝试验证一些 python 参数。在我们在 Python 3.0 中获得新的静态类型之前,最好的方法是什么。

这是我正在尝试的示例:

正如您所看到的,装饰器很好地对我的类的输入进行类型检查,但是我必须为第二个类定义所有参数,当我有多个继承级别时,这会变得非常讨厌。我可以使用 kwargs 取得一些成功,但它不如上面的类型检查方法那么好。

本质上,我想从 kwargs 列表中弹出一个参数并检查它的类型,然后将其余部分传递给它的父级,但是随着规模的扩大,以一种非常灵活和干净的方式执行此操作。

有什么建议么?