为什么要使用内置函数而不是根类方法?

4

我相信这是一个常见问题,但很难在谷歌上找到答案。

为什么Python使用abs(x)而不是x.abs()?

据我所见,除了调用x.__abs__()之外,abs()所做的一切都可以在object.abs()中实现。

这是历史原因吗,因为以前没有根类?

4个回答

13

一旦你听到第二个原因,它就变得非常有意义。 - Tobias

1

我认为你正在寻找一个典型的例子,其中语言设计师决定可读性和简洁性胜过纯粹的结构。


0

Python是一种支持面向对象编程的语言,但它故意不是一个纯粹的面向对象语言。正如您所提到的,即使是用户定义的Python类也并非总是派生自单个基类。

在Python中,函数是功能的基本单位,因此核心操作(例如:str、dir、print、hash)看起来像函数是有道理的。


-3

我认为这涉及到了 Python 中面向对象的用法,因为方法调用的第一个参数是对象本身,所以 x.abs() 实际上就是 abs(x)

请查看第3.2.3章节下的页面,了解Python支持面向对象编程

那应该能解释一些问题


3
x.abs() 并不是 abs(x),它是在 x 所属的类 C 中调用 C.abs(x)。这两者非常不同。abs(x) 调用的是全局函数,与 C 无关。 - RichieHindle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接