强引用
class t:
def __init__(self, a):
self.a = a
def __repr__(self):
return str(self.a)
__str__ = __repr__
tt = t(1)
b = tt # b是tt的强引用
print(b, tt) # 两者值一样,均为1
del tt # 删除原始对象
print(b) # 引用的原始对象tt被删除,b依然可以访问,为1
强引用就是原始对象被删除,引用原始对象的变量依然可以访问。
在本例中就是:
原始对象tt被删除,引用tt的b依然可以被访问。
弱引用
import weakref
class t:
def __init__(self, a):
self.a = a
def __repr__(self):
return str(self.a)
__str__ = __repr__
b = t(1)
c = weakref.ref(b) # 让c成为b的弱引用
print(c(), b) # 两者值一样,均为1
del b # 删除原始对象
print(c()) # 被引用对象b删除,c无法访问到,为None
弱引用就是原始对象被删除,引用原始对象的变量不可以被访问。
在本例中就是:
原始对象b被删除,引用b的c无法访问。