Detailed explanation of destructor in Python

藏色散人
Release: 2019-04-01 14:28:16
Original
9247 people have browsed it

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
Copy after login

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
Copy after login

Output:

Employee created.
Destructor called, Employee deleted.
Copy after login

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...')
Copy after login

Output:

Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
Copy after login

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()
Copy after login

Output:

die
Copy after login

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!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template