返回介绍

示例:对方法应用装饰器

发布于 2024-01-29 22:24:14 字数 785 浏览 0 评论 0 收藏 0

正如我们在前一小节中见到的,由于它们都在一条class语句的末尾运行,所以元类和装饰器往往可以互换地使用,虽然语法不同。在这二者之间的选择,在很多情况下是随意的。也可能将二者组合起来使用,作为互补的工具。在本小节中,我们将展示一个示例,它就是这样的组合——对一个类的所有方法应用一个函数装饰器。

用装饰器手动跟踪

在前面的一章中,我们编写了两个函数装饰器,其中之一跟踪和统计对一个装饰函数的调用,另一个计时这样的调用。它们采用各种形式,其中的一些对于函数和方法都适用,另一些并不适用。下面把两个装饰器的最终形式收入一个模块文件中,以便重用或引用:

正如我们在上一章了解到的,要手动使用这些装饰器,我们直接从模块导入它们,并且在想要跟踪或计时的每个方法前编写@装饰语法:

这段代码运行时,我们得到了如下输出——对装饰方法的调用指向了拦截逻辑,并且随后委托调用,因为最初的方法名已经绑定到了装饰器:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文