2009-04-03 3 views
1

Есть ли способ обойти ограничения WeakValueDictionary, чтобы он мог хранить слабые ссылки на встроенные типы, такие как dict или list? Можно ли что-то сделать на уровне C в модуле расширения? Мне действительно нужен контейнер weakref, который может содержать (почти) любой тип объекта.WeakValueDictionary для хранения любого типа

ответ

1

Согласно Python documentation вы можете создать слабые ссылки на подклассы dict и list ... это не идеальное решение, но если вы можете создать пользовательский подкласс dict и использовать его вместо родного dict, это должно быть достаточно хорошо. (Я никогда не делал этого сам)

+0

Проблема в том, что объект, который будет храниться в этом контейнере, будет поступать из кода других людей, а контейнер является «деталью реализации» большего набора классов, поэтому Я бы предпочел избегать требования «должен быть слабым». – 2009-04-03 19:14:13

+0

ах ... ну, я не знаю, как создать полностью общий WeakValueDictionary, который может содержать что угодно вообще. Существуют различные трюки, которые вы можете использовать в особых случаях, хотя, если вы отредактируете вопрос, чтобы указать, какие объекты вам нужны, чтобы иметь слабые ссылки, это может помочь. –

Смежные вопросы