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

问题描述 投票:4回答:2

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

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

python weak-references
2个回答
0
投票

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

obj = ref()

weakref docs

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

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


0
投票

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

__self__

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

© www.soinside.com 2019 - 2024. All rights reserved.