编程语言
首页 > 编程语言> > python – 一种在对象上使用weakref作为属性的更有效方法?

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