Python 中的反射2024 年 8 月 29 日 | 5 分钟阅读 在本教程中,我们将学习 Python 中的反射机制。我们还将讨论如何实现反射以及它在编程中的有效性。让我们先对反射做一个简要的介绍。 引言反射是一种机制,它允许检查可能作为参数传递给函数的对象的属性。换句话说,反射用于增强函数的动态描述。例如 - 当我们写 type(obj) 时,Python 将返回 obj 的类型。反射有助于编写一个递归反转函数,该函数可用于列表、字符串以及其他支持切片的序列。 str() 方法返回空字符串,与我们写 ". " 相同。同样,写 list() 与写 [] 相同。 让我们理解下面的例子。 示例 - 输出 [40, 30, 20, 10] tniopTavaJ 解释 - 在项目工作中,开发人员会编写大量的类,类有自己的函数等等。程序员可以控制使用哪个类或调用哪个函数。但有时,我们需要根据用户的需求来决定执行哪些代码。用户可能会输入一些数据,或者以其他方式,然后反射会将用户的指令传递给运行特定的代码。这个过程是自动发生的,无需手动检查用户指令是否应执行代码片段,而是反射机制会自动搜索并执行特定的代码块。 启用反射的函数Python 提供了四种启用反射的方法。这些函数是 -
让我们来理解上面的方法。
示例 - 输出 <class 'int'> <class 'str'> <class 'list'>
示例 - 输出 is a float: True is an integer: True is a string: True is a tuple: True is a set: True is a list: True is a dict: True
示例 - 输出 x is not callable y is callable
示例 - 输出 ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
示例 - 输出 "John Doe" "Unknown" 解释 - 在第一行,我们创建了一个名为 obj 的对象。在第二行,我们使用 getattr() 函数获取 obj 的 name 属性的值。函数返回属性的值,即 "John Doe"。在第三行,我们使用 getattr() 函数获取 obj 的 age 属性的值。函数返回属性的值,即 30。在第四行,我们使用 getattr() 函数获取 obj 的 height 属性的值。该属性不存在,因此函数返回默认值 "Unknown"。 结论Python 中的反射是运行时检查和修改程序结构和行为的能力。这可以用来使代码更加灵活和动态,允许它适应不同的情况、输入和输出。反射还可以通过允许代码以多种方式使用来使其更具可重用性。我们可以使用反射创建一个可以操作任何对象(无论其类型如何)的函数。 反射用于创建一个能够适应不同用户输入的程序。 我们可以使用反射创建一个程序,该程序可以根据情况生成不同的输出。 |
在二分搜索中,我们将项目集合分成两半,以减少查找元素所需的直接比较次数。但是,有一个要求:数组的项必须事先排序。二分搜索方法定位特定列表的索引...
阅读 4 分钟
Fizz-Buzz 是用于解释 Fizz、Buzz 和 Fizz_Buzz 组中数字除法的编程任务。假设用户有一个数字“n”,并且他们需要显示从 1 到 n 的所有数字的字符串表示。但是有一些...
阅读 4 分钟
电子邮件验证是任何需要用户输入电子邮件地址的应用程序中的重要步骤。不准确或无效的电子邮件地址可能导致通信中断、数据丢失和任何系统效率低下。Python 提供了几种验证电子邮件地址的方法,包括正则表达式、内置...
阅读 4 分钟
XGBoost 是 Python 的一个库,它实现了梯度提升决策树,旨在提高速度和执行效率,这是机器学习 (ML) 最重要的方面。XgBoost:XgBoost(极端梯度提升)是华盛顿大学的学者们引入的 Python 库。它是一个...
阅读 6 分钟
Peewee 是一个基于 ORM (对象关系映射) 的 Python 库,它支持 SQLite、MySQL、PostgreSQL 和 Cockroach 数据库。在接下来的教程中,我们将学习如何使用 Peewee 库插入新记录、删除记录、创建索引以及更多内容……
14 分钟阅读
您可以使用开源的Selenium测试自动化工具创建脚本来自动化Web浏览器。它常用于在线应用程序测试,并与多种编程语言兼容,包括Python、Java、C#和Ruby。通过使用Web驱动程序,该程序可以管理浏览器并模拟...
阅读 6 分钟
当我们需要找出股票在特定时间段内的趋势时,移动平均线是重要的指标。移动平均线严格分析时间序列;因此,它们有助于经济学家、交易员和分析师了解市场趋势,识别...
阅读9分钟
在本教程中,我们将学习 Python 请求模块或如何使用 Python 请求库处理请求。我们还将讨论请求的功能。最后,我们将学习如何针对不同情况优化和自定义这些功能。简介 通常,...
7 分钟阅读
加密至关重要,因为它允许您安全地保护您不希望他人看到的数据。企业使用它来保护商业机密,政府使用它来保护机密信息,许多人使用它来保护个人信息以避免身份盗用....
阅读 13 分钟
二维码是一种条形码,数字设备可以轻松读取,并以方格状排列的像素字符串的形式携带数据。由于许多智能手机都内置了二维码扫描器,因此二维码经常被使用...
阅读20分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India