Когда больше нет ссылок на объект, GC должен избавляться от него постоянно.Но что происходит, когда у нас все еще есть ссылки на атрибуты или методы объекта?
Например, в приведенном ниже коде я все еще пытаюсь использовать a.x
, хотя a
было удалено.Это допустимый фрагмент кода?
import gc
class A:
def __init__(self, x):
self.x = x
a = A(7)
x = a.x
del a
gc.collect()
print(x) # is it going to work?
Изменится ли ответ, если я использую метод вместо атрибута?Например:
import gc
class A:
def __init__(self, x):
self.x = x
def method(self):
print("A.method", self.x)
a = A(7)
f = a.method
del a
gc.collect()
f() # is it going to work?