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



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

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

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

特殊方法可以让你钩子到概念中,而不是内置函数或其他东西。

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

any()期待一个可迭代的参数,你在这里寻找的概念是迭代器类型方法;钩住的不是函数,而是那个概念。

你可能想研究默认的类型抽象基类,看看Python类型实现了什么方法;这里许多特殊的方法被组合在一个可读的概述中。

不,只针对其中的很多,因为实用性需要。

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

No.类可以实现的特殊方法列表记录在第 3.3 节中。

最新更新