[英]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.