все Python 3weakrefпонятие
weakref.WeakKeyDictionary
слабые коллекции
Словарь со слабыми ключами: пара исчезает, когда ключ-объект удалён. Позволяет прикрепить данные к чужим объектам, не меняя их и не удерживая.
Синтаксис
d = weakref.WeakKeyDictionary()
Ключом может быть только объект, поддерживающий слабые ссылки, — строки и числа не подходят (TypeError), так что для кэша по строкам он бесполезен. Ключи сравниваются по ==, а не по тождеству: два равных объекта займут одну запись. Перебирать его, пока где-то удаляются ключи, рискованно — размер может измениться посреди цикла; перебирайте копию list(d.items()).
Примеры
import weakref
class Widget:
pass
meta = weakref.WeakKeyDictionary()
w = Widget()
meta[w] = 'blue'
print(len(meta)) # → 1
del w
print(len(meta)) # → 0
try:
meta['name'] = 1
except TypeError:
print('TypeError') # → TypeError
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности