gpt4 book ai didi

python - Python 中的 __weakref__ 到底是什么?

转载 作者:IT老高 更新时间:2023-10-28 20:25:41 27 4
gpt4 key购买 nike

令人惊讶的是,__weakref__ 没有明确的文档。弱引用解释here . __weakref____slots__ 的文档中也有简短提及。但我找不到关于 __weakref__ 本身的任何信息。

__weakref__ 到底是什么?- 它只是一个充当标志的成员:如果存在,该对象可能被弱引用?- 或者它是一个可以被覆盖/分配以获得所需行为的函数/变量?怎么样?

最佳答案

__weakref__ 只是一个不透明的对象,它引用了当前对象的所有弱引用。实际上它是 weakref 的一个实例(或有时是 weakproxy),它既是对对象的弱引用,又是对该对象的所有弱引用的双向链表的一部分。

这只是一个实现细节,它允许垃圾收集器通知弱引用其所指对象已被收集,并且不再允许访问其底层指针。

弱引用不能依赖检查它所引用的对象的引用计数。这是因为该内存可能已被回收,现在正被另一个对象使用。最好的情况是虚拟机会崩溃,最坏的情况是弱引用将允许访问它最初没有引用的对象。这就是垃圾收集器必须通知弱引用它的引用不再有效的原因。

weakrefobject.h用于该对象的结构和 C-API。实现细节是here

关于python - Python 中的 __weakref__ 到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36787603/

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