“对象没有__dict__,因此您不能将任意属性分配给对象类的实例。”

发布于 2021-01-29 15:01:30

来自https://docs.python.org/3.3/library/functions.html#object

object没有__dict__,因此您不能将任意属性分配给object该类的实例。

为什么“object没有__dict__”?这个对我有用

>>> object.__dict__
mappingproxy({'__repr__': <slot wrapper '__repr__' of 'object' objects>, '__hash__': <slot wrapper '__hash__' of 'object' objects>, '__subclasshook__': <method '__subclasshook__' of 'object' objects>, '__ne__': <slot wrapper '__ne__' of 'object' objects>, '__format__': <method '__format__' of 'object' objects>, '__new__': <built-in method __new__ of type object at 0xa3dc20>, '__doc__': 'The most base type', '__class__': <attribute '__class__' of 'object' objects>, '__dir__': <method '__dir__' of 'object' objects>, '__delattr__': <slot wrapper '__delattr__' of 'object' objects>, '__getattribute__': <slot wrapper '__getattribute__' of 'object' objects>, '__le__': <slot wrapper '__le__' of 'object' objects>, '__init__': <slot wrapper '__init__' of 'object' objects>, '__gt__': <slot wrapper '__gt__' of 'object' objects>, '__ge__': <slot wrapper '__ge__' of 'object' objects>, '__eq__': <slot wrapper '__eq__' of 'object' objects>, '__reduce__': <method '__reduce__' of 'object' objects>, '__lt__': <slot wrapper '__lt__' of 'object' objects>, '__str__': <slot wrapper '__str__' of 'object' objects>, '__reduce_ex__': <method '__reduce_ex__' of 'object' objects>, '__sizeof__': <method '__sizeof__' of 'object' objects>, '__setattr__': <slot wrapper '__setattr__' of 'object' objects>})

为什么“您不能为object该类的实例分配任意属性”?

关注者
0
被浏览
94
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您正在__dict__类型 与实例上的属性混淆。object() 实例 没有__dict__属性:

     >>> object().__dict__
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'object' object has no attribute '__dict__'
    

    请注意,__dict__自定义Python类实例的属性是
    描述符

    ;实例本身不具有属性,而是提供该属性的类(因此type(instance).__dict__['__dict__'].__get__(instance)返回)。object.__dict__可能存在,但object.__dict__['__dict__']不存在。

    object()不支持实例属性,因为它是所有自定义Python类的基础,该类在定义slot时必须支持不具有__dict__属性



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看