Python Glossary English

все 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Сообщить о неточности