Hướng dẫn what are destructors in python? - hàm hủy trong python là gì?

Cải thiện bài viết

Lưu bài viết

Các hàm tạo trong Pythondestructors được gọi khi một vật thể bị phá hủy. Trong Python, các chất phá hủy không cần thiết nhiều như trong C ++ vì Python có bộ thu gom rác tự động xử lý bộ nhớ. Nó được gọi là khi tất cả các tham chiếu đến đối tượng đã bị xóa, tức là khi một đối tượng được thu thập rác.
Destructors are called when an object gets destroyed. In Python, destructors are not needed as much as in C++ because Python has a garbage collector that handles memory management automatically. 
The __del__() method is a known as a destructor method in Python. It is called when all references to the object have been deleted i.e when an object is garbage collected. 
Syntax of destructor declaration : 
 

def __del__(self):
  # body of destructor

Lưu ý: Một tham chiếu đến các đối tượng cũng bị xóa khi đối tượng đi ra khỏi tham chiếu hoặc khi chương trình kết thúc. & NBSP; Ví dụ 1: Đây là ví dụ đơn giản về phá hủy. Bằng cách sử dụng từ khóa DEL, chúng tôi đã xóa tất cả các tài liệu tham khảo của đối tượng ‘obj, do đó, bộ hủy đã tự động gọi. & Nbsp; A reference to objects is also deleted when the object goes out of reference or when the program ends. 
Example 1 : Here is the simple example of destructor. By using del keyword we deleted the all references of object ‘obj’, therefore destructor invoked automatically.
 

Python3

class Employee:

    def __init__(self

Employee created.
Destructor called, Employee deleted.
0
Employee created.
Destructor called, Employee deleted.
1
Employee created.
Destructor called, Employee deleted.
2
Employee created.
Destructor called, Employee deleted.
3
Employee created.
Destructor called, Employee deleted.
4

    def

Employee created.
Destructor called, Employee deleted.
7self

Employee created.
Destructor called, Employee deleted.
0
Employee created.
Destructor called, Employee deleted.
1
Employee created.
Destructor called, Employee deleted.
2
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
3
Employee created.
Destructor called, Employee deleted.
4

Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
5
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
6
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
7

Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
8
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
9

Output:

Employee created.
Destructor called, Employee deleted.

Lưu ý: Chất phá hủy được gọi sau khi chương trình kết thúc hoặc khi tất cả các tham chiếu đến đối tượng bị xóa tức là khi số lượng tham chiếu trở thành 0, không phải khi đối tượng đi ra khỏi phạm vi. Ví dụ 2: Ví dụ này đưa ra lời giải thích về ghi chú đã đề cập ở trên. Ở đây, lưu ý rằng bộ hủy diệt được gọi sau khi ‘chương trình kết thúc được in. & Nbsp; The destructor was called after the program ended or when all the references to object are deleted i.e when the reference count becomes zero, not when object went out of scope.
Example 2 :This example gives the explanation of above mentioned note. Here, notice that the destructor is called after the ‘Program End…’ printed.
 

Python3

class Employee:

    def __init__(self

Employee created.
Destructor called, Employee deleted.
0
Employee created.
Destructor called, Employee deleted.
1
Employee created.
Destructor called, Employee deleted.
2Employee:0
Employee created.
Destructor called, Employee deleted.
4

    def

Employee created.
Destructor called, Employee deleted.
7self

Employee created.
Destructor called, Employee deleted.
0
Employee created.
Destructor called, Employee deleted.
1Employee:9

Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
5
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
6
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
7

    

Employee created.
Destructor called, Employee deleted.
1
Employee created.
Destructor called, Employee deleted.
2    5
Employee created.
Destructor called, Employee deleted.
4

Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
8
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
9

    

Employee created.
Destructor called, Employee deleted.
1
Employee created.
Destructor called, Employee deleted.
2def4
Employee created.
Destructor called, Employee deleted.
4

Lưu ý: Chất phá hủy được gọi sau khi chương trình kết thúc hoặc khi tất cả các tham chiếu đến đối tượng bị xóa tức là khi số lượng tham chiếu trở thành 0, không phải khi đối tượng đi ra khỏi phạm vi. Ví dụ 2: Ví dụ này đưa ra lời giải thích về ghi chú đã đề cập ở trên. Ở đây, lưu ý rằng bộ hủy diệt được gọi sau khi ‘chương trình kết thúc được in. & Nbsp;

Employee created.
Destructor called, Employee deleted.
1
Employee created.
Destructor called, Employee deleted.
2__init__(1
Employee created.
Destructor called, Employee deleted.
4

def     1

Employee created.
Destructor called, Employee deleted.
1
Employee created.
Destructor called, Employee deleted.
2__init__(8
Employee created.
Destructor called, Employee deleted.
4

Output:

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

    

Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
5
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
6
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
7
Now, consider the following example : 
 

Python3

    def7

Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
9

Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
5
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
6 __init__(5

Ví dụ 3: Bây giờ, hãy xem xét ví dụ sau: & nbsp; & nbsp;

class self1

    def __init__(self

    def

Employee created.
Destructor called, Employee deleted.
7self

    def

Employee created.
Destructor called, Employee deleted.
7self

Employee created.
Destructor called, Employee deleted.
0
Employee created.
Destructor called, Employee deleted.
1
Employee created.
Destructor called, Employee deleted.
13

Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
5
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
6
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
7

Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
8
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called
9

Employee created.
Destructor called, Employee deleted.
20

Lưu ý: Chất phá hủy được gọi sau khi chương trình kết thúc hoặc khi tất cả các tham chiếu đến đối tượng bị xóa tức là khi số lượng tham chiếu trở thành 0, không phải khi đối tượng đi ra khỏi phạm vi. Ví dụ 2: Ví dụ này đưa ra lời giải thích về ghi chú đã đề cập ở trên. Ở đây, lưu ý rằng bộ hủy diệt được gọi sau khi ‘chương trình kết thúc được in. & Nbsp;circular reference.
Generally, Python’s garbage collector which is used to detect these types of cyclic references would remove it but in this example the use of custom destructor marks this item as “uncollectable”. 
Simply, it doesn’t know the order in which to destroy the objects, so it leaves them. Therefore, if your instances are involved in circular references they will live in memory for as long as the application run.
 


Các nhà xây dựng và người phá hủy trong Python là gì?

Nhiệm vụ của các hàm tạo là khởi tạo và gán các giá trị cho các thành viên dữ liệu của lớp khi một đối tượng của lớp được tạo.Destructor: Destructor in Python được gọi khi một vật thể bị phá hủy.

Destructor và ví dụ là gì?

Destructor là một hàm thành viên được gọi tự động khi đối tượng đi ra khỏi phạm vi hoặc bị phá hủy rõ ràng bởi một cuộc gọi để xóa.Một kẻ phá hủy có cùng tên với lớp, trước một tilde (~).Ví dụ, trình hủy diệt cho chuỗi lớp được khai báo: ~ chuỗi ().a member function that is invoked automatically when the object goes out of scope or is explicitly destroyed by a call to delete . A destructor has the same name as the class, preceded by a tilde ( ~ ). For example, the destructor for class String is declared: ~String() .

Destructor được sử dụng để làm gì?

Các chất phá hủy thường được sử dụng để xử lý bộ nhớ và làm sạch khác cho một đối tượng lớp và các thành viên lớp của nó khi đối tượng bị phá hủy.Một kẻ phá hủy được gọi cho một đối tượng lớp khi đối tượng đó thoát khỏi phạm vi hoặc bị xóa rõ ràng.to deallocate memory and do other cleanup for a class object and its class members when the object is destroyed. A destructor is called for a class object when that object passes out of scope or is explicitly deleted.

Một kẻ phá hủy trong OOP là gì?

Trong lập trình hướng đối tượng, một chất phá hủy (đôi khi DTOR viết tắt) là một phương pháp được gọi một cách cơ học ngay trước khi bộ nhớ của đối tượng được giải phóng.a method which is invoked mechanically just before the memory of the object is released.