从python中的弱引用代理获取常规引用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从python中的弱引用代理获取常规引用相关的知识,希望对你有一定的参考价值。

是否有一种方法可以为我获得了弱引用代理的对象获得正确的引用?

我浏览了weakref模块的文档,却找不到答案,或者手动戳了一个weakproxy对象。

答案

您可以通过调用弱引用对象来获取引用对象:

obj = ref()

weakref docs

弱引用对象没有属性或方法,但允许通过调用获取参考对象(如果仍然存在)。如果参照对象不存在,调用引用对象将返回weakref

虽然这不适用于代理对象,但我看不到从弱引用代理获取弱引用对象或对实际对象的引用的方法。

另一答案

尽管没有直接暴露在代理对象本身上的东西,但是可以通过滥用绑定方法的None属性来获得引用:

__self__

这里使用obj_ref = proxy.__repr__.__self__ 只是一个随机选择,尽管如果您想使用通用方法,最好使用所有对象都应该具有的方法。

以上是关于从python中的弱引用代理获取常规引用的主要内容,如果未能解决你的问题,请参考以下文章

理解Java中的弱引用

关于C#中的弱引用

C# 中的弱引用 WeakReference

总是将 self 的弱引用传递到 ARC 中的块中?

Python3标准库:weakref对象的非永久引用

Swift如何实现通用类型的弱引用数组(上)