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() >>>