Python 描述符2024 年 8 月 29 日 | 阅读 3 分钟 简介: 本文讨论 Python 描述符。Python 描述符的创建是为了管理许多通过引用获取元素的类的属性。描述符使用了三个特殊的方法:`__getters__()`、`__setter__()` 和 `__delete__()`。当一个对象上定义了这些方法时,我们称之为描述符。 通常,Python 使用 getter 和 setter 等方法来更改属性值,而无需进行任何特殊处理。它们是一个简单的存储机制。有时,需要验证分配给某个值的值。描述符是属性、方法、静态方法和类方法背后的机制。 描述符是 Python 中独有的一个特性,它弥补了语言中许多隐藏的“魔法”。假设你认为 Python 描述符一直是一个复杂的话题,只有很少的实际用途。 如果是这样,本教程将是帮助你理解这一强大功能的绝佳工具。你将明白为什么 Python 描述符是一个如此令人兴奋的话题,以及它们有哪些用例。 什么是 Python 描述符?描述符是一个实现了描述符协议方法的 Python 对象。这允许你创建在作为其他对象属性访问时表现出特殊行为的对象。描述符协议的正确定义是: 如果一个描述符只实现了 `.__get__()`,则它被称为非数据描述符。如果它们实现了 `.__set__()` 或 `.__delete__()`,则它们被称为数据描述符。请注意,这种区别不仅仅在于名称,还在于行为。 这是因为数据描述符在查找过程中具有优先权。 为什么使用 Python 描述符?现在,我们知道了什么是 Python 描述符,以及 Python 本身如何使用它们来支持方法和属性等功能。我们还看到了在避免一些常见陷阱的同时创建 Python 描述符的方法。 到目前为止,一切都应该很清楚了,但你仍然可能想知道为什么应该使用它们。 根据我的经验,我知道许多优秀的 Python 开发人员从未在早期使用过这个选项,也不需要它。这很正常,因为很少有实际用例需要 Python 描述符。然而,这并不意味着 Python 描述符仅仅是高级用户的学术话题。仍然有一些令人惊叹的用例,值得花时间去掌握它们的使用方法。 Python 中的描述符协议: 在其他编程语言中,描述符被称为 setters 和 getters,并使用公共方法来获取和设置私有变量。Python 没有私有变量的概念,描述符协议可以被看作是 Python 实现类似功能的方式。 描述符是一种新的方式,可以在 Python 中实现类,而无需从特定对象继承任何东西。为了在 Python 中轻松实现描述符,你需要使用上面描述的至少一个方法。 请注意,以下示例返回访问了其属性的对象,而 owner 是将描述符分配为属性的类。Python 描述符具有 setter、getter 和 delete 方法的三种协议。 请注意以下重要事项:
示例: 现在我们给出一个 Python 描述符的示例。示例如下: 输出: 现在我们编译上述程序,然后得到以下结果: Javatpoint 结论: 本文简要讨论了 Python 描述符。现在你已经了解了 Python 如何使用描述符来支持其一些特性,你将成为一名更具洞察力的开发者,了解为什么某些 Python 特性会以这种方式实现。 下一主题Python false |
在颜色排序问题中,我们得到一个包含三个数字的数组。假设这些数字是 0、1 和 2。我们的任务是编写一个程序来对这些数字进行排序。排序后,数组将首先包含所有的 0,然后是 1...
阅读9分钟
什么是 Selenium 模块?Selenium 是 Python 提供的一个用于自动化测试的模块。它提供了一个易于使用的 API,借助 Selenium 驱动程序可以进行不同的功能测试。Selenium 是一个开源的 Python 框架,它提供了用于使用 Selenium 编写功能测试的 API……
阅读 2 分钟
栈是遵循后进先出 (LIFO) 原则的线性数据结构,该原则规定最新添加的项是第一个被删除的项。栈的基本命令是“push”、“pop”、“peek”(或 top)和“isEmpty”。链表中每个栈元素...
5 分钟阅读
Python 编程语言提供了一个标准的图形用户界面(GUI)框架 Tkinter,用于开发快速简单的 GUI 应用程序。在接下来的教程中,我们将使用 GUI 在 Python 中开发一个简单的多项选择测验游戏。我们将使用...
阅读 29 分钟
本教程将教我们如何使用正则表达式验证给定的电子邮件地址。正则表达式是搜索文本和执行替换操作、验证、字符串分割以及许多其他操作的重要技术。它们提供了一套规则来识别特定的...
阅读 3 分钟
在创建和向客户交付商品过程中涉及的制造和分销网络被称为供应链。而供应链分析则研究供应链的许多元素,以学习提高其效率并为消费者增加更多价值的方法。这篇文章是为...
阅读 22 分钟
为了在以后使用,开发者有时可能希望通过网络传输复杂的对象命令来保存其对象的内部状态。开发者可以使用Python标准库支持的Pickle模块的序列化过程来实现这一点。我们将...
阅读 15 分钟
在本教程中,我们将定义如何在 Python 中处理不同的时区。我们还将了解 Python 的本地时区。时区可以被描述为观察标准时间的地理区域。让我们对...做一个简短的介绍。
阅读 8 分钟
飞船泰坦尼克号问题是基本泰坦尼克号生存问题的进阶版本,机器学习爱好者必须面对一次,并预测一个人的生存几率。飞船泰坦尼克号项目问题说明 在这个项目中,一艘飞船载着许多人进行太空旅行。……
14 分钟阅读
Flask 是一个流行的 Web 框架,用于构建基于 Python 的 Web 应用程序。它允许开发人员通过提供用于处理路由、渲染模板、管理会话以及处理请求和响应的工具来轻松创建 Web 应用程序。Web 应用程序的一个重要方面是处理用户输入。用户可能需要...
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India