首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python语言中的__weakref__到底是什么?

Python语言中的__weakref__到底是什么?
EN

Stack Overflow用户
提问于 2016-04-22 15:28:39
回答 1查看 22K关注 0票数 84

令人惊讶的是,没有关于__weakref__的显式文档。弱引用的解释是here。在__slots__的文档中也简短地提到了__weakref__。但是我找不到任何关于__weakref__本身的东西。

__weakref__到底是什么?-它只是一个充当标志的成员:如果存在,对象可能被弱引用?-或者它是一个函数/变量,可以被重写/赋值以获得所需的行为?多么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-22 17:18:11

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

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

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

结构见weakrefobject.h,此对象见C-API。实现细节是here

票数 71
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36787603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档