python – 一种在对象上使用weakref作为属性的更有效方法?
作者:互联网
我知道在Python中我可以做类似以下的事情:
from weakref import ref
class A(object):
def __init__(self, parent):
self._parent = ref(parent)
@property
def parent(self):
return self._parent()
a = A(some_other_object)
print a.parent
在这个假设情况下,我创建了一个A实例,并以一种很好的方式访问弱引用的父对象.不过,看起来每个弱引用属性的4行代码有点多.
我以为我可以做以下的事情作为上述的快捷方式:
class A(object):
def __init__(self, parent):
self.parent = property(ref(parent))
但是这不返回父对象,它返回一个属性对象.有没有更紧凑的方法来创建一个弱引用的对象,我可以作为属性而不是可调用的访问?
解决方法:
我使用weakref.proxy.
import weakref
class A(object):
def __init__(self, parent)
self.parent = weakref.proxy(parent)
标签:python,weak-references 来源: https://codeday.me/bug/20190625/1283505.html