考虑以下代码:
from weakref import ref
class Klass(object):
# __slots__ = ['foo']
def __init__(self):
self.foo = 'bar'
k = Klass()
r = ref(k)
它可以工作,但是当我取消对__slots__
的注释时,它在python2.6下以TypeError: "cannot create weak reference to 'Klass' object"
中断。在
请问,有人知道这是Python和__slots__
的固有限制还是一个bug?如何解决这个问题?在
您必须将} quirks 之一。在2.3之前,即使这样也不起作用,但幸运的是,您的版本没有那么旧。在
__weakref__
添加到插槽列表中。它是^{从Python documentation开始。在
如果将
__weakref__
添加到__slots__
,则代码将正常工作:相关问题 更多 >
编程相关推荐