Home  >  Article  >  Backend Development  >  Detailed explanation of destructor in Python

Detailed explanation of destructor in Python

藏色散人
藏色散人Original
2019-04-01 14:28:169124browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn