Python __call__ 方法17 Mar 2025 | 4 分钟阅读 魔术方法的介绍前缀和后缀带有双下划线的名称的方法是 Python 中用于特定用途的保留方法。例如,__init__ 方法用于对象构造函数,而 __call__ 方法用于使对象可调用。我们将这些方法称为 dunder 方法,其中 dunder 指的是 双下划线(下划线)。这些 dunder 方法 也被称为 魔术方法 - 然而,它们与魔术没有任何关系。Python 社区中有许多开发者不喜欢“魔术”这个词,因为它会给人一种不鼓励使用这种方法的感觉,但事实恰恰相反。 理解可调用函数当对象在 __call__() 函数中定义时,Python 中的对象就称为可调用对象。相应的函数可以定义为 x(arg 1, arg 2, …),这是 x.__call__(arg1, arg2, …) 的简写。 对象何时可调用?如果一个对象可以使用括号 () 调用,就像函数一样,那么它就被认为是可调用的。在 Python 中,有几样东西是可调用的:
注意:callable() 方法返回一个布尔值,指示对象是否可调用。如果对象可调用,则此函数返回 True;否则,它返回 False。此外,即使对象不可调用,此函数也可能返回 True。但是,如果此方法返回 False,则对象不可调用。此外,Python 类总是可调用的。因此,我们可以始终使用 callable() 函数处理类的对象,而不是类本身。 让我们考虑以下示例以理解 Python callable() 函数的行为。 示例 输出 Employee Class is callable = True Employee object is callable = False 说明 在上面的示例中,我们定义了一个类 Employee,它有一个变量 n = 0。然后我们定义了一个函数并实例化了该类。最后,我们使用 callable() 函数检查类及其对象是否可调用。 让我们考虑一个 __call__() 函数的例子。 示例 输出 <__main__.Person object at 0x000002706DF41FD0> The Person object is callable: True 说明 在上面的示例中,我们定义了 Person 类以及变量 person_id = 0 和 person_name = " "。然后我们定义了初始化函数以及可调用函数。最后,我们实例化了该类,打印了对象,并检查了该对象是否可调用。结果,person 对象似乎是可调用的。 此外,我们可以观察到我们使用了 *args 来允许传递可变数量的参数,并使用 **kwargs 来允许将命名参数传递给 __call__() 方法。 现在,让我们考虑另一个例子,我们将使用 callable() 函数来检查对象是否可调用,然后将该对象作为函数调用。 示例 输出 Printing Arguments Printing Keyword Arguments Printing Arguments 15 30 Printing Keyword Arguments Printing Arguments 15 30 Printing Keyword Arguments Printing Arguments 15 30 {'a': 4, 'b': 8} Printing Keyword Arguments Printing Arguments 15 B Printing Keyword Arguments personname == George personid == 50 说明 在上面的示例中,我们定义了一个 if 语句,其中如果对象 m 可调用,则该对象将被调用,无需参数、仅带参数、使用 __call__() 函数、带不同类型的参数以及带参数和关键字参数。结果,所需的对象的调用都成功了。 下一主题Python heapq 模块 |
我们可以通过多种方式对Python列表进行排序。有各种算法被设计用来对列表进行排序。对一维Python列表进行排序非常直接。它需要直接应用一种可用的算法。然而,给定一个嵌套的Python列表,基于什么...
阅读 6 分钟
当一个元素在列表中出现多次时,我们称之为重复项。在本教程中,我们将学习在 Python 中从列表中删除这些重复项的不同方法。基本方法 使用列表推导式 使用 Set() 使用 enumerate() 使用 OrderedDict 让我们逐一讨论它们...
阅读 4 分钟
Python 与 JavaScript Python 和 JavaScript 都是功能极其强大的编程语言,具有广泛的实际应用。Python 是一种可用于 Web 开发和各种其他用途(如科学研究)的编程语言。JavaScript 主要用于前端和后端 Web...
阅读 6 分钟
在本教程中,我们将编写一个 Python 程序,打印出列表元素所有可能的组合。我们将以三个不同的整数作为输入,并打印出这些数字所有可能的组合。这是一个相当简单的程序;它可能会被问到...
阅读 3 分钟
Python 的 signal 模块是标准库的一部分,它提供了处理信号的机制,信号是发送到正在运行的程序的中断。信号可用于多种目的,例如进程间通信、错误处理和超时实现。signal 模块...
阅读 17 分钟
如何将 Python 列表或可迭代对象拆分为块 在本教程中,我们将学习将 Python 列表或其他可迭代对象拆分为块的各种选项。迭代器方法:Python 中的迭代器是用于遍历可迭代对象(如列表)的项目,...
7 分钟阅读
如何计算失业率?失业率是通过将失业人数占劳动力总数的比例来计算的,用于评估失业情况。在 COVID-29 期间,失业率显著上升,使其分析成为一项有价值的数据科学研究....
阅读 13 分钟
Peewee 是一个基于 ORM (对象关系映射) 的 Python 库,它支持 SQLite、MySQL、PostgreSQL 和 Cockroach 数据库。在接下来的教程中,我们将学习如何使用 Peewee 库插入新记录、删除记录、创建索引以及更多内容……
14 分钟阅读
什么是 `__future__` 模块?在 Python 中,我们知道有很多内置模块,它们提供了许多函数来提高代码效率和生产力。同样,`__future__` 模块是 Python 中的一个内置模块,...
阅读 3 分钟
如何在 Python 中反转字符串?在 Python 中,反转字符串是一项常见任务。字符串是 Unicode 字符的集合。在 Python 中有多种方法可以反转字符串。其中一些方法如下:使用 for 循环 使用 while 循环 使用...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India