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/