python - Python 变得更面向对象了吗?

标签 python ruby oop

我记得有一次,it was said that Python is less object oriented than Ruby ,因为在 Ruby 中,一切都是对象。这对 Python 也有改变吗?最新的 Python 是否比以前的版本更面向对象?

最佳答案

Jian Lin — 答案是"is",Python 比 Matz 决定创建 Ruby 时更面向对象,而且这两种语言现在都具有“一切皆对象”的特点。回到 Python 年轻的时候,像字符串和数字这样的“类型”缺少方法,而“对象”是用“class”语句构建的(或者通过在 C 扩展模块中故意构建一个类)并且效率稍低但确实支持方法和继承。在 20 世纪 90 年代初期,当快速的 386 是一台相当不错的机器时,这种妥协是有道理的。但是类型和类在 Python 2.2(2001 年发布)中是统一的,字符串也有方法,在最近的 Python 版本中,用户甚至可以从它们继承子类。

因此:Python 曾经肯定不那么面向对象;但是,据我所知,所有这些旧障碍现在都消失了。

这是发生的统一指南:

http://www.python.org/download/releases/2.2/descrintro/

澄清:也许我可以更简单地说:在 Python 中,一切始终都是对象;但是一些基本类型的对象(整数、字符串)曾经被“不同的规则”所使用,这些规则阻止了 OO 编程方法(如继承)与它们一起使用。现在已经修复了。此处另一个响应中描述的 len() 方法可能是我希望 Guido 在升级到 Python 3.0 时唯一改变的东西。但至少他给了我字典理解,所以我不会大声提示。 :-)

关于python - Python 变得更面向对象了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/894502/

相关文章:

python - Pandas groupby datetime 函数不保留 dtype

python - Dict of Dict 到 CSV(带有已定义的 header )

ruby-on-rails - 在新浏览器选项卡中打开的 PDF 文档中创建链接

c++ - 从子类的STL vector 到基类 vector 的转换

python - 面向对象设计?

python - 如何在每次出现时保留 numpy 数组的最新元素

python - 禁止 save() 以防止由于未保存的相关对象导致数据丢失

ruby - 为什么带有 initialize() 的 respond_to 返回 false?

sql - 使用 Ruby Geocoder 检索附近的用户和返回距离

c++ - 没有 "new"C++ 的对象初始化