object() 有什么用?

What is object() good for?

怎么可能

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

您不能向 object 的实例添加属性,因为 object 没有 __dict__ attribute (which would store the attributes). From the docs:

class object

Return a new featureless object. object is a base for all classes. It has the methods that are common to all instances of Python classes. This function does not accept any arguments.

Note: object does not have a __dict__, so you can’t assign arbitrary attributes to an instance of the object class.

object 确实有其用途:

  1. 如上所述,它作为 Python 中所有对象的基础 class。你看到和使用的一切最终都依赖于object.

  2. 您可以使用 object 来创建 sentinel values,它们是独一无二的。使用 isis not 测试它们只会 return True 当给出一个确切的 object 实例时。

  3. 在Python2.x中,你可以(应该)继承object创建一个new-style class。新式 classes 具有增强的功能和更好的支持。请注意,所有 classes 在 Python 3.x.

  4. 中自动为新样式