怎么可能
class EmptyClass:
def __init__(self):
pass
e = EmptyClass()
e.a = 123
工作并且:
o = object()
o.a = 123
没有(AttributeError: 'object' object has no attribute 'a'
)而
print isinstance(e, object)
>>> True
当你不能像这样使用时,object()
有什么用呢?
答案 0 :(得分:18)
您无法向object
的实例添加属性,因为object
没有__dict__
attribute(会存储属性)。来自docs:
class object
返回一个新的无特征对象。
object
是所有课程的基础。它具有所有Python类实例共有的方法。 此函数不接受任何参数。注意:
object
没有__dict__
,因此您无法将任意属性分配给object
类的实例。
object
确实有其用途:
如上所述,它充当Python中所有对象的基类。您看到和使用的所有内容最终都依赖于object
。
您可以使用object
创建完全唯一的sentinel values。使用is
和is not
对其进行测试只会在给出确切的True
实例时返回object
。
在Python 2.x中,您可以(应该)从object
继承以创建new-style class。新式类具有增强的功能和更好的支持。请注意,所有类在Python 3.x中都是自动新的。