8

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

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

这和下面写的一样吗?

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

我真的看不出它们的功能有什么不同。这只是一种澄清那someClass是 a subclassof 的方法object吗?object当我做一个时明确写是一个好习惯class吗?

4

2 回答 2

13

在 Python 2 中,将someClassturn 的子类object变成someClass“新式类”,而没有(object)它就只是“经典类”。有关它们之间差异的信息,请参阅此处的文档或其他问题;简短的回答是,您应该始终使用新型类来获得它们带来的好处。

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

于 2013-10-27T03:11:11.877 回答
1

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

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

object它隐式继承自。

有关更多信息,请访问此。

于 2013-10-27T03:09:25.283 回答