为什么Python使用内置函数而不是对象方法(如ruby等)?

时间:2011-03-05 00:31:48

标签: python ruby

  

可能重复:
  Why does python use 'magic methods'?

只想澄清一下,这不是python vs ruby​​。我已经成为python的用户约1年了。我喜欢它,除了一些时髦的内置插件与方法。就像为什么你必须做len(listA)而不是listA.length()或listA.size(),如ruby或Java。从我的Java背景来看,使用listA.length()而不是len(在ide中很容易找到对象所拥有的方法而不是学习内置函数)似乎很直观。有谁可以解释这个设计选择的原因?

1 个答案:

答案 0 :(得分:1)

主要是由于历史。 Python的祖先是一种名为ABC的教学语言,我收集的语言与BASIC类似。

就我个人而言,我觉得很高兴知道我总能用len(thing)获得某些东西的长度,而不必知道特定类型的实现者称为等效方法:len()length()getLength()?您可以拥有自己喜欢的所有约定,但当len()内置函数打破而因为您没有实现__len__()时,您可以确定每个人都会将其长度方法命名为__len__()

关于IDE自动完成方法的观点仅适用于IDE知道给定名称绑定的对象类型的情况,这在Python等动态语言中并不总是可行。至少,不是没有执行代码。

顺便说一下,您认为内置函数(例如str()int()float())的某些功能不是函数,而是类型。 (换句话说,str(42)是一个字符串结构,而不是一个返回一个字符串的函数调用。)即使你是一个OO stickler,这些也是非常完整的。