20

次のコードを検討してください。

from weakref import ref

class Klass(object):
    # __slots__ = ['foo']
    def __init__(self):
        self.foo = 'bar'

k = Klass()
r = ref(k)

動作しますが、コメントを外すとPython 2.6__slots__で壊れます。TypeError: "cannot create weak reference to 'Klass' object"

__slots__これがPython固有の制限なのか、それともバグなのか、誰か知っていますか? それを回避する方法は?

4

2 に答える 2

7

__weakref__スロットのリストに追加する必要があります。__slots__の一つです。2.3 より前では、これでも機能しませんでしたが、幸いなことにバージョンはそれほど古くありません。

于 2013-10-22T19:23:04.833 に答える