Ruby如何比Python更面向对象?

时间:2010-09-08 07:55:27

标签: python ruby oop

发明Ruby的Matz说他设计的语言比Python更面向对象。 Ruby如何比Python更面向对象?

4 个答案:

答案 0 :(得分:22)

如果从1993年开始使用Python并将其与Ruby进行比较,则后者更加面向对象。然而,在overhaul in Python 2.2之后这不再是真的。我会说现代Python就像面向对象一样。

答案 1 :(得分:15)

通常给出的一个例子是len,它在Python中是一个内置函数。您可以在对象中实现一个特殊的__len__方法,该方法将由len调用,但len仍然是一个函数。在Ruby中,对象只有.length属性/方法,所以当你说obj.length而不是len(obj)时,它看起来更像面向对象,尽管深层次的内容几乎发生了相同的事情。

也就是说,多年来Python已经朝着更加面向对象的方向发展。目前,所有对象(以及隐式的用户定义对象)都继承自object类。还添加了元类,并且在ABCs(抽象基类)的帮助下,许多内置和核心库类已被组织成层次结构。

在我大量使用Python的过程中,我从来没有发现它在OO部门中缺乏。它可以做我想要它与对象做的一切。确实,Ruby 感觉更纯粹是OO,但至少根据我的经验,这并不是一个真正的实际问题。

答案 2 :(得分:9)

来自WikiVS

  

...在Ruby中,所有函数和大多数运算符实际上都是对象的方法,许多Python函数都是过程函数而不是方法。

Ruby的创建者Matz的以下interview为您的问题和上述观点提供了额外的背景。

  

...

     

斯图尔特:让我们从一点历史开始吧。你为什么决定写Ruby?

     

Matz :早在1993年,我就与一位同事谈论脚本语言。他们的力量和可能性让我印象深刻。我觉得编写脚本是可以的。

     

作为一个长期面向对象的编程爱好者,在我看来,OO编程也非常适合编写脚本。然后我环顾网络。我发现尚未发布的Perl 5将实现OO功能,但它并不是我想要的。我放弃了Perl作为面向对象的脚本语言。

     

然后我遇到了Python。它是一种解释性的,面向对象的语言。但我不觉得它是一种“脚本”语言。此外,它是程序编程和面向对象编程的混合语言。

     

我想要一种比Perl更强大的脚本语言,以及比Python更面向对象的。这就是为什么我决定设计自己的语言。

     

...

答案 3 :(得分:-2)

很简单,Ruby中的几乎所有(包括数字)都是一个对象;没有标量值。