【问题标题】:What does (object) do next to class name in python? [duplicate](对象)在python中的类名旁边做什么? [复制]
【发布时间】:2013-11-06 00:13:27
【问题描述】:

当你在python中声明一个类的时候,我经常看到(object)写在类名旁边。

class someClass(object):
    def __init__(self, some_variable):
        ...
    ...

和下面写的一样吗?

class someClass: # didn't write (object) here.
    def __init__(self, some_variable):
        ...
    ...

我真的看不出它们的功能有什么不同。这只是澄清someClassobjectsubclass 的一种方式吗?当我创建class 时,明确写object 是一个好习惯吗?

【问题讨论】:

  • 我喜欢@jwodder 的解释。就最佳实践而言,我倾向于显式使用(object),这样我的代码就可以同时与 Python 2.x 和 3 一起使用,而不会造成混淆。

标签: python class object


【解决方案1】:

在 Python 2 中,使 someClass 成为 object 的子类会将 someClass 变成“新式类”,而没有 (object) 它只是一个“经典类”。有关它们之间差异的信息,请参阅the docsanother question here;简短的回答是,您应该始终使用新型类来获得它们带来的好处。

在 Python 3 中,所有类都是“新式”的,写 (object) 是多余的。

【讨论】:

    【解决方案2】:

    在 python 3.x 中,它们是相同的,当你声明时:

    class C:
        def __init__(self):
            ...
    

    它隐式继承自 object

    欲了解更多信息,请访问this.

    【讨论】:

      猜你喜欢
      • 2019-11-10
      • 2012-01-26
      • 2016-08-22
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      相关资源
      最近更新 更多