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