当我创建一个具有唯一内容的模块时:
class Classname(randomobject):
pass
我尝试运行解释器说randomobject
未定义的模块的 .py 文件。
但是当我这样做时:
class Classname(object):
pass
该模块运行良好。所以如果object
不是关键字,那么它是什么?
object
是一个(全局)变量。默认情况下,它绑定到一个内置类,该类是类型层次结构的根。
(这导致了一个有趣的属性,即您可以采用任何内置类型,并使用该__bases__
属性来访问称为 object 的类型)。
不是关键字或运算符的所有内置内容都是标识符。
以下三个类声明在 Python 3 中是相同的
class Classname(object):
pass
class Classname():
pass
class Classname:
pass
嗯,会有一些细微的差别,但不是根本上重要的,因为对象类是所有的基础。
如果您打算编写 Python 不可知代码(Python2 和 Python3 不可知),您可以使用第一个声明。
object
是引用内置类型的标识符。
与许多其他语言不同,Python 中没有原始类型。一切都是对象,包括所有数据类型。
我不确定你为什么期望继承 fromrandomobject
工作。
object
是您在 Python 2 中创建新样式类时继承的基类。