python弱引用

    技术2022-07-10  115

    del 弱引用

    class A: ... def __del__(self): ... print('del') ... a = A() b = a a = None b = None del #以上为只是重写了del方法,当A释放的时候执行del import weakref class B: ... def __del__(self): ... print('del') ... b1 = B() b2 = weakref.ref(b1) b1 = None del b2 = None #弱引用时在删除B1时已经释放空间,两者并不是同一个空间,两者并不是指向同一个类的 #其实指向的是c1

    也可以通过空间的方式判断两者是否占用相同空间

    class C: ... def __del__(self): ... print('c.__del__') ... b1 c1 = C() c1 <__main__.C object at 0x0000028FCF88C2B0> c2 = weakref.ref(c1) c2 <weakref at 0x0000028FCF8744F8; to 'C' at 0x0000028FCF88C2B0> c1 is c2 False c3 = c2() c3 is c1 True 如果将c3实例化,此时两者占用地址相同

    弱引用的用处: 在双向链表中采用的

    Processed: 0.010, SQL: 12