为什么内置函数而不是root类方法?

时间:2009-04-25 21:02:33

标签: python oop

(我确定这是常见问题解答,但也很难谷歌)

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

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

这是历史性的,因为根本不存在根类吗?

4 个答案:

答案 0 :(得分:13)

来自Guido van Rossum的官方回答,以及Fredrik Lundh的补充说明,请点击此处:http://effbot.org/pyfaq/why-does-python-use-methods-for-some-functionality-e-g-list-index-but-functions-for-other-e-g-len-list.htm

简而言之:

  1. 对于大多数此类操作,abs(x)比x.abs()更自然地读取

  2. 你知道abs(x)得到一个绝对值,而x.abs()方法可能意味着取决于x的类别。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

Python是一种支持面向对象编码的语言,但故意不是纯粹的OO语言。正如您所正确提到的,Python类,甚至是用户定义的类,并不总是派生自单个基类。

函数是Python中基本的功能单元,因此核心操作(随机样本:str,dir,print,hash)看起来像函数是有意义的。

答案 3 :(得分:-3)

我认为它涉及如何使用面向对象的方式python,因为对象的方法调用的第一个参数是对象本身,所以x.abs()是必要的abs(x)

查看3.2.3章下面的page,Python支持面向对象编程

应该解释一些事情