我相信这是一个常见问题,但很难在谷歌上找到答案。
为什么Python使用abs(x)而不是x.abs()?
据我所见,除了调用x.__abs__()之外,abs()所做的一切都可以在object.abs()中实现。
这是历史原因吗,因为以前没有根类?
我认为你正在寻找一个典型的例子,其中语言设计师决定可读性和简洁性胜过纯粹的结构。
Python是一种支持面向对象编程的语言,但它故意不是一个纯粹的面向对象语言。正如您所提到的,即使是用户定义的Python类也并非总是派生自单个基类。
在Python中,函数是功能的基本单位,因此核心操作(例如:str、dir、print、hash)看起来像函数是有道理的。
我认为这涉及到了 Python 中面向对象的用法,因为方法调用的第一个参数是对象本身,所以 x.abs() 实际上就是 abs(x)
请查看第3.2.3章节下的页面,了解Python支持面向对象编程
那应该能解释一些问题