返回介绍

使用装饰器编写特性

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

尽管我们直到下一章才会介绍额外细节,但我们更早地在第31章就引入了函数装饰器的基本概念。回忆一下,函数装饰器的语法是:

Python会自动将其翻译成对等形式,把函数名重新绑定到可调用的decorator的返回结果上:

由于这一映射,证实了内置函数property可以充当一个装饰器,来定义一个函数,当获取一个属性的时候自动运行该函数:

运行的时候,装饰的方法自动传递给property内置函数的第一个参数。这其实只是创建一个特性并手动绑定属性名的一种替代语法:

对于Python 2.6,property对象也有getter、setter和deleter方法,这些方法指定相应的特性访问器方法赋值并且返回特性自身的一个副本。我们也可以使用这些方法,通过装饰常规方法来指定特性的组成部分,尽管getter部分通常由创建特性自身的行为自动填充:

实际上,这段代码等同于本小节的第一个示例——在这个例子中,装饰只是编写特性的一种替代方法。当运行这段代码时,结果是相同的:

和property手动赋值的结果相比,这个例子中,使用装饰器来编写特性只需要3行额外的代码(这是无法忽视的差别)。就像替代工具的通常情况一样,在这两种技术之间的选择很大程度上与个人爱好有关。

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

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

发布评论

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