当我创建一个单独内容的模块时:
class Classname(randomobject):
pass
我尝试运行模块的.py文件,解释器说randomobject
未定义。
但是当我这样做时:
class Classname(object):
pass
该模块运行正常。因此,如果object
不是关键字,那么它是什么?
答案 0 :(得分:14)
object
是一个(全局)变量。默认情况下,它绑定到内置类,该类是类型层次结构的根。
(这导致了一个有趣的属性,你可以使用任何内置类型,并使用__bases__
属性来达到名为object的类型。
不是关键字或运算符的内置内容都是标识符。
答案 1 :(得分:6)
object
是一个引用内置类型的标识符。
与许多其他语言不同,Python中没有原始类型。一切都是对象,包括所有数据类型。
我不确定您为什么希望从randomobject
继承工作。
答案 2 :(得分:2)
object
是在Python 2中创建新样式类时继承的基类。
答案 3 :(得分:0)
以下三个类声明在Python 3中相同
class Classname(object):
pass
class Classname():
pass
class Classname:
pass
好吧,differences会比较少,但是从根本上讲并不重要,因为对象类是所有对象的基础。
如果您打算编写Python不可知代码(Python2和Python3不可知),则可以使用第一个声明。