Есть ли способ поддержки слабых ссылок с коллекциями. Namedtuple? - PullRequest
1 голос
/ 10 октября 2019

Я хочу использовать слабую ссылку на именованный кортеж, но он не работает:

>>> import collections
>>> import weakref
>>>
>>> Foo = collections.namedtuple('Foo','a b c')
>>> weakref.ref(Foo(1,2,3))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot create weak reference to 'Foo' object

Я попытался исправить это с помощью __slots__ = ('__weakref__',), но это также не удалось:

>>> class Foo(collections.namedtuple('Foo','a b c')):
...     __slots__ = ('__weakref__',)
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Error when calling the metaclass bases
    nonempty __slots__ not supported for subtype of 'Foo'

Есть ли обходной путь?

...