在python中,类名旁边(object)做什么?

What does (object) do next to class name in python?

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
class someClass(object):
    def __init__(self, some_variable):
        ...
    ...

这和下面写的一样吗?

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

我看不出它们在功能上有什么不同。这仅仅是一种说明someClassobjectsubclass的方法吗?当我制作一个class时,显式地写object是一个好的实践吗?


在python 2中,将someClass作为object的子类,将someClass变成了一个"新样式类",而如果没有(object),它只是一个"经典类"。有关它们之间的差异的信息,请参阅本文中的文档或另一个问题;简短的答案是,为了它们带来的好处,您应该始终使用新样式的类。

在python3中,所有类都是"新样式",而编写(object)是多余的。


在python3.x中,当您声明:

1
2
3
class C:
    def __init__(self):
        ...

它含蓄地继承了object

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