什么是对象()有用?

时间:2015-02-03 18:41:28

标签: python class object

怎么可能

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()有什么用呢?

1 个答案:

答案 0 :(得分:18)

您无法向object的实例添加属性,因为object没有__dict__ attribute(会存储属性)。来自docs

  

class object

     

返回一个新的无特征对象。 object是所有课程的基础。它具有所有Python类实例共有的方法。   此函数不接受任何参数。

     

注意:   object没有__dict__,因此您无法将任意属性分配给object类的实例。

object确实有其用途:

  1. 如上所述,它充当Python中所有对象的基类。您看到和使用的所有内容最终都依赖于object

  2. 您可以使用object创建完全唯一的sentinel values。使用isis not对其进行测试只会在给出确切的True实例时返回object

  3. 在Python 2.x中,您可以(应该)从object继承以创建new-style class。新式类具有增强的功能和更好的支持。请注意,所有类在Python 3.x中都是自动新的。