繁体   English   中英

python的所有内置函数都有魔术方法吗?

[英]Does python have magic methods for all it's built-in functions?

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

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

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

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

__len__是容器的长度,而不是len()函数的钩子。 碰巧len()函数是该功能的可见API。

any()需要一个可迭代的参数,您在这里寻找的概念是Iterator类型的方法 挂钩的不是功能,而是这个概念。

您可能需要研究默认类型的抽象基类,以了解Python类型实现的方法。 在这里,许多特殊的方法以可读的形式组合在一起。

不,仅出于实用性要求,仅适用于其中的许多产品。

(特别是对于__any__ ,之前已经讨论过,但最终认为它不是必需的。)

不能。类可以实现的特殊方法列表在3.3节中介绍

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM