TL;DR(其实并不长.. 但是看标题就足够了)
import weakref
def print_death():
print("Gone with the wind")
class test_class:
a={1,2,3}
def __init__(self):
self.b={2,3,4}
_tc=test_class()
monitor=weakref.finalize(_tc,print_death)
monitor_a=weakref.finalize(_tc.a,print_death)
monitor_b=weakref.finalize(_tc.b,print_death)
del _tc
会输出什么? 在del一个实例的, 被del掉的只能是它的动态属性, 而不是类属性, 因为类属性还可以被引用到, 很简单, 就是通过test_class.a.
因此会输出2次.
当python程序结束时, 会显示最后一个没了.