发明了Ruby的Matz说,他把Ruby设计成比Python更面向对象的语言。为什么Ruby比Python更面向对象?
发布于 2010-09-08 18:02:28
如果您将1993年的Python与Ruby进行比较,那么Ruby更加面向对象。然而,在overhaul in Python 2.2之后,这不再是真的。我要说的是,现代的Python是最面向对象的。
发布于 2010-09-08 16:39:32
一个常见的例子是len
,在Python语言中它是一个内置函数。您可以在对象中实现一个特殊的__len__
方法,该方法将被len
调用,但len
仍然是一个函数。在Ruby中,对象只有.length
属性/方法,所以当你说obj.length
而不是len(obj)
时,它看起来更像是面向对象的,尽管在幕后同样的事情也会发生。
也就是说,多年来,Python已经向更加面向对象的方向发展。目前,所有对象(以及隐式用户定义的对象)都继承自object
类。还添加了元类,并且在抽象基类(Abstract Base Classes)的帮助下,许多内置和核心库类被组织成层次结构。
在我大量使用Python的过程中,我从未发现OO部门缺少它。它可以对对象做任何我想做的事情。诚然,Ruby感觉更纯粹的面向对象,但至少在我的经验中,这并不是一个真正的实际问题。
发布于 2010-09-08 16:11:46
来自WikiVS,
…在Ruby中,所有函数和大多数操作符实际上都是对象的方法,而许多Python函数是过程函数而不是方法。
下面这篇关于Ruby的创建者Matz的interview为你的问题和上面的观点提供了额外的上下文。
…
Stewart:让我们从一个小的历史开始。你为什么决定写Ruby?
Matz:早在1993年,我和一位同事谈到了脚本语言。他们的力量和可能性给我留下了深刻的印象。我觉得脚本化是最好的选择。
作为一个长期的面向对象编程爱好者,在我看来,OO编程也非常适合脚本编程。然后我看了看四周的网。我发现还没有发布的Perl 5将要实现面向对象的特性,但这并不是我真正想要的。我放弃了Perl作为一种面向对象的脚本语言。
然后我遇到了Python。它是一种解释性的、面向对象的语言。但我不觉得它是一种“脚本”语言。此外,它是过程编程和面向对象编程的混合语言。
我想要一种比Perl更强大、比Python更面向对象的脚本语言。这就是为什么我决定设计自己的语言。
…
https://stackoverflow.com/questions/3665656
复制相似问题