python - python 的所有内置函数都有神奇的方法吗?

标签 python built-in magic-methods

Python 支持很多在对象中实现自定义功能的神奇方法,例如 __lt__ , __getattr__等等。甚至还有一些神奇的方法会影响某些内置函数的执行方式,例如 __len____instancecheck__ 。但是Python中的所有内置函数都有神奇的方法吗?

例如,如果我想改变 any 的方式函数将在某个类上执行,我可以指定 __any__那个类中的魔术方法?如果这不是一个选项,有什么方法可以专门影响 any 的方式吗?适用于该类? (我意识到,如果我想要 any 从可迭代对象接收项目的方式的特殊功能,我可以定义 __iter__ ,但这不是我想要做的)

请注意,我希望为 any 实现自定义功能只是一个例子,我不想明确地为 any 定义自定义功能.

最佳答案

特殊的方法可以让您了解概念,而不是太多的内置函数或其他东西。

__len__ 是容器长度,而不是专门用于 len() 函数的 Hook 。恰好 len() 函数是该功能的可见 API。

any() 需要一个可迭代的参数,您在这里寻找的概念是 Iterator type methods ;被钩住的不是函数,而是那个概念。

您可能想研究 default type abstract base classes查看 Python 类型实现了哪些方法;这里许多特殊方法被分组在一个可读的概述中。

关于python - python 的所有内置函数都有神奇的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21801806/

相关文章:

python - 三重嵌套列表 Python

python - 为什么会出现错误,KeyError : 'wsgi.input' ?

python - 对生成器使用前瞻

python:从内置类型列表继承,如何访问新类中的元素?

go - 内置函数是唯一可以接受类型参数的函数吗?

python - scikit-learn 中的 PCA 投影和重建

python - Python 内置的 bool 方法 __ror__ 的用途是什么?

php - 对二维数组使用神奇的 __set() 方法

PHP __set 和 __get 继承中的重载

python - 使用 __getattr__ 覆盖魔术方法