为啥 Python 网站上的一些代码示例不使用 `class classname(object):` 约定? [复制]

Posted

技术标签:

【中文标题】为啥 Python 网站上的一些代码示例不使用 `class classname(object):` 约定? [复制]【英文标题】:Why do some code examples on the Python website not use the `class classname(object):` convention? [duplicate]为什么 Python 网站上的一些代码示例不使用 `class classname(object):` 约定? [复制] 【发布时间】:2017-05-09 07:08:21 【问题描述】:

一直听说在Python中创建类的时候最好从object显式继承,但是我注意到在Python网站上的很多例子中(例如this,没有使用这个约定。有没有这是什么原因?

【问题讨论】:

这在每个“旧样式与新样式”类的文档中都有解释。最终,在 python 2 中,类不会从对象继承。 Python 3 解决了这个问题。 python.org/doc/newstyle。您展示的示例使用的是 Python 3。 我建议目前坚持使用class classname(object): 约定,因为它可以更轻松地编写可以在 Python 3 和 Python 2 上正确运行的代码。OTOH,如果你正在编写的代码是专门针对 Python 3,如果让 Python 2 兼容会很痛苦,那么请随意放弃(object)。 :) 【参考方案1】:

这些示例使用 Python 3(准确地说是 3.6)。 “旧”与“新”样式类在 Python 2 中是一回事。在 Python 3 中,所有类都是“新样式”类。

【讨论】:

对不起,如果我不清楚。我知道 Python 3 中没有区别,但我的问题是关于在 Python3 中使用 class Foo:class Foo(object): 的选择,因为它们都做同样的事情。 @ChristopherShroba 没有理由从 Python 3 中的 object 继承而不是保持与具有相同代码库的 Python 2 的向后兼容性。如果不需要这样的支持,那么它只会使代码嘎嘎作响。你也可以写if (x == 1):,但你不这样做,因为它只会增加视觉冲击。 我明白了。感谢您的评论!

以上是关于为啥 Python 网站上的一些代码示例不使用 `class classname(object):` 约定? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用我网站上的按钮运行 python 脚本 [重复]

为啥大网站做的网站ICO图标能显示,我在线制作却不能显示

为啥我的一些内联工具提示不对齐?

为啥 jQuery 选择器只选择特定网站上的第一个层次结构元素?

为啥我的贝宝 ipn 验证总是返回无效?

AttributeError:类型对象 x 没有属性 y 以及与 Python 3.4 的其他一些不一致 [关闭]