(我确定这是常见问题解答,但也很难谷歌)
为什么Python使用abs(x)而不是x.abs?
据我所知,除了调用x.__abs__
之外,abs()所做的一切都可以在object.abs()中实现
这是历史性的,因为根本不存在根类吗?
答案 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
简而言之:
对于大多数此类操作,abs(x)比x.abs()更自然地读取
你知道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支持面向对象编程
应该解释一些事情