Сообщить об ошибке.

Класс WeakMethod() модуля weakref в Python

Слабая ссылка на связанный метод

Синтаксис:

import weakref

weakref.WeakMethod(method)

Параметры:

  • method - метод экземпляра класса.

Возвращаемое значение:

  • слабую ссылку на связанный метод.

Описание:

Класс WeakMethod() модуля weakref представляет собой пользовательский подкласс weakref.ref(), который имитирует слабую ссылку на связанный метод. То есть метод, определенный в классе и найденный в экземпляре.

Поскольку связанный метод является недолговечным, то стандартная слабая ссылка не может его удержать. Класс weakref.WeakMethod() имеет специальный код для воссоздания привязанного метода до тех пор, пока не умрет объект или исходная функция.

Примеры:

>>> import weakref, gc
>>> class C:
...     def method(self):
...         print("method called!")
... 
>>> c = C()
>>> r = weakref.ref(c.method)
>>> r()
>>> r = weakref.WeakMethod(c.method)
>>> r()
# <bound method C.method of <__main__.C object at 0x7f60f7f9ceb8>>
>>> r()()
# method called!
>>> del c
>>> gc.collect()
# 0
>>> r()
>>>