w3resource

What is a destructor in Python?

Python Destructors: Understanding Cleanup and Resource Release

A destructor in Python is a method named 'del()' that performs cleanup operations or releases resources when an object is about to be destroyed or garbage collected. The Python interpreter automatically calls the destructor just before it dealslocates an object's memory and reclaims its space.

The destructor's primary purpose is to free up any resources the object has acquired during its lifetime. This includes closing files, releasing network connections, or deallocating memory. When dealing with external resources or managing system-level objects that need to be properly cleaned up, it is especially useful.

However, it's important to keep in mind that the exact timing of the destroyer's call is not guaranteed. Python's garbage collection is automatic and runs asynchronously. In addition, there's no guarantee that the destroyer will be called immediately after an object becomes unreachable, as destruction can occur in any order among objects.

Example: A simple destructor

class Motorbike:
    def __init__(self, name):
        self.name = name
    def __del__(self):
        print(f"{self.name} is being destroyed.")
# Creating objects of the class
bike1 = Motorbike("Bike 1")
bike2 = Motorbike("Bike 2")
# Deleting the objects
del bike1
del bike2

Output:

Bike 1 is being destroyed.
Bike 2 is being destroyed.

In this example, when the objects 'bike1' and 'bike2' are deleted explicitly using the "del" keyword, Python's garbage collector automatically calls the destructor "__del__()" for each object before it releases its memory. The destructor simply prints a message indicating the object is destroyed. The order in which the destructors are executed is determined by Python's garbage collection mechanism.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/python-interview/what-is-a-destructor-in-python.php