Normal Python references to objects increment the object’s reference count thus preventing it from being garbage collected.
If a user desires creating weak references, the weakref module can be used:
import weakref
class Rezha(object): passTo create a weak reference, the ref class is used:
# object instancerezha = Rezha()# weak reference to our objectr = weakref.ref(rezha)Then, you can call the reference object:
print(r)# <weakref at 0x01414E40; to 'Rezha'...>print(r())# <__main__.Rezha object at 0x0133D270>If the reference no longer exists, calling it returns None:
del rezhaprint(r())# NoneTo check the existence of the reference:
if r is not None: # reference exists!Weak references are often used to implement caching for large objects, but also for implementing cyclic references.
Imagine the case where object X references object Y and Y references X. Without a cycle-detecting garbage collector, the two objects would never be garbage collected. However, if one of the references is weak, they will be properly garbage collected.