Я читаю исходный код входящего пакета asyncio
. Обратите внимание, что в конце метода существует оператор self = None
. Что он делает?
def _run(self):
try:
self._callback(*self._args)
except Exception as exc:
msg = 'Exception in callback {}{!r}'.format(self._callback,
self._args)
self._loop.call_exception_handler({
'message': msg,
'exception': exc,
'handle': self,
})
self = None # Needed to break cycles when an exception occurs.
Я думал, что он удалит экземпляр, но следующий тест не предполагает этого:
class K:
def haha(self):
self = None
a = K()
a.haha()
print(a) # a is still an instance