47

当我创建一个具有唯一内容的模块时:

class Classname(randomobject):
    pass

我尝试运行解释器说randomobject未定义的模块的 .py 文件。

但是当我这样做时:

class Classname(object):
    pass

该模块运行良好。所以如果object不是关键字,那么它是什么?

4

4 回答 4

29

object是一个(全局)变量。默认情况下,它绑定到一个内置类,该类是类型层次结构的根。

(这导致了一个有趣的属性,即您可以采用任何内置类型,并使用该__bases__属性来访问称为 object 的类型)。

不是关键字或运算符的所有内置内容都是标识符。

于 2012-04-06T13:58:03.110 回答
12

以下三个类声明在 Python 3 中是相同的

class Classname(object):
    pass

class Classname():
    pass

class Classname:
    pass

嗯,会有一些细微的差别,但不是根本上重要的,因为对象类是所有的基础。

如果您打算编写 Python 不可知代码(Python2 和 Python3 不可知),您可以使用第一个声明。

于 2019-05-23T13:26:51.907 回答
7

object是引用内置类型的标识符。

与许多其他语言不同,Python 中没有原始类型。一切都是对象,包括所有数据类型。

我不确定你为什么期望继承 fromrandomobject工作。

于 2012-04-06T13:43:15.830 回答
6

object是您在 Python 2 中创建新样式类时继承的基类。

于 2012-04-06T13:45:20.370 回答