gpt4 book ai didi

python - 什么是 `` mean in the output of ` C.__dict__`?

转载 作者:太空宇宙 更新时间:2023-11-04 00:28:36 26 4
gpt4 key购买 nike

>>> class C:
... pass
...
>>> C.__dict__
mappingproxy({'__doc__': None,
'__weakref__': <attribute '__weakref__' of 'C' objects>,
'__dict__': <attribute '__dict__' of 'C' objects>,
'__module__': '__main__'})

<attribute 'xxx' of 'C' objects> ,

  • 'C' objects C 的平均实例?
  • <attribute 'xxx' of 'C' objects>均值 xxxC 实例的属性?但它是由 C.__dict__ 列出的作为 C 的属性.

为什么 __doc__ 的某些属性(例如 __module__C)未提及 <attribute 'xxx' of 'C' objects> ,而其他人是?


回复:“注意:<attribute ..> 基本上是这些描述符的 repr”

为什么是<attribute ..>以下示例中未显示?

>>> class md:
... def __get__(self, obj, owner):
... return 3
...

>>> class CC:
... d=md()
...
>>> CC.__dict__
mappingproxy({'d': <__main__.md object at 0x7f7387f8c978>, ...})

最佳答案

这些是 PyGetSetDescrObject s这是类 C 的实例的计算属性(用 C 语言实现的描述符) . Documentation on these是最小的(或者我似乎找不到它 :-),但是,你可以看看 tp_getset in the C-API 谈到了这些:

struct PyGetSetDef* PyTypeObject.tp_getset

An optional pointer to a static NULL-terminated array of PyGetSetDef structures, declaring computed attributes of instances of this type.

For each entry in the array, an entry is added to the type’s dictionary (see tp_dict below) containing a getset descriptor.

没有的对象 <attribute ..> (注意:<attribute ..> 基本上是这些描述符的 repr)根本不是描述符(__doc__ 通常是一个字符串或 None 如果未定义,而 __module__ 保存类所在模块的名称定义)。


Re: "note: <attribute ..> is basically the repr of these descriptors"

Why is <attribute ..> not shown in the following example?

解决我错过的这个更新。

因为这是一个用 Python 实现的描述符并且继承了默认的 repr来自 object .

repr PyGetSetDescrObject 的功能在 C 中实现使用不同的 repr ,主要是为了区分它们(我假设)。

关于python - 什么是 `<attribute ' xxx' of 'C' objects >` mean in the output of ` C.__dict__`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46586958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com