The destructor is called when the object is destroyed. In Python, destructors are not as needed as in C because Python has a garbage collector that automatically handles memory management. The __del__() method is called the destructor method in Python. This function is called when all references to the object have been removed, that is, when an object is garbage collected.
Syntax of destructor declaration:
def __del__(self): # body of destructor
Example 1: The following is a simple example of a destructor. The destructor is automatically called by removing all references to the object "obj" using the del keyword.
# Python program to illustrate destructor class Employee: # Initializing def __init__(self): print('Employee created.') # Deleting (Calling destructor) def __del__(self): print('Destructor called, Employee deleted.') obj = Employee() del obj
Output:
Employee created. Destructor called, Employee deleted.
Note: The destructor is called after the program ends, or when all references to the object have been deleted. When the reference count reaches zero, not when the object goes out of scope.
Example 2: This example explains the considerations mentioned above. Here, note that the destructor is called after "Program End..." is printed.
# Python program to illustrate destructor class Employee: # Initializing def __init__(self): print('Employee created') # Calling destructor def __del__(self): print("Destructor called") def Create_obj(): print('Making Object...') obj = Employee() print('function end...') return obj print('Calling Create_obj() function...') obj = Create_obj() print('Program End...')
Output:
Calling Create_obj() function... Making Object... Employee created function end... Program End... Destructor called
Example 3: Now, consider the following example:
# Python program to illustrate destructor class A: def __init__(self, bb): self.b = bb class B: def __init__(self): self.a = A(self) def __del__(self): print("die") def fun(): b = B() fun()
Output:
die
In this In the example, when the function fun() is called, it creates an instance of class B, which passes itself to class A, which then sets a reference to class B and creates a circular reference.
Normally, Python's garbage collector, which is used to detect these types of circular references, will remove them, but in this example, a custom destructor is used to mark this item as "uncollectable" (uncollectable). ).
Simply put, it doesn't know the order in which objects are destroyed, so it leaves them alone. So if your instances involve circular references, they will exist in memory as long as the application is running.
Related recommendations: "Python Tutorial"
The above is the detailed content of Detailed explanation of destructor in Python. For more information, please follow other related articles on the PHP Chinese website!