Python Glossary English

все Python 3weakrefпонятие

weakref.WeakSet

слабые коллекции

Множество, которое хранит объекты по слабым ссылкам: удалённый объект сам исчезает из него. Удобно для реестра живых экземпляров или подписчиков.

Синтаксис

s = weakref.WeakSet()

Классический пример — учёт созданных экземпляров класса: обычный set в атрибуте класса удерживал бы их вечно, и память бы текла. Элементы должны поддерживать слабые ссылки, так что числа и строки в WeakSet не положить. Как и в WeakKeyDictionary, размер может уменьшиться в любой момент, поэтому len() — это снимок, а не гарантия.

Примеры

import weakref
class Player:
    online = weakref.WeakSet()
    def __init__(self):
        Player.online.add(self)
a, b = Player(), Player()
print(len(Player.online))  # → 2
del a
print(len(Player.online))  # → 1

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности