Computer >> Máy Tính >  >> Lập trình >> Python

Phương thức hủy __del __ () hoạt động như thế nào trong Python?

Phương thức __del __ () được biết đến như một phương thức hủy. Nó được gọi khi một đối tượng được thu thập rác, điều này xảy ra sau khi tất cả các tham chiếu đến đối tượng đã bị xóa.

Trong trường hợp đơn giản, điều này có thể xảy ra ngay sau khi bạn xóa một biến như del x hoặc, nếu x là biến cục bộ, sau khi hàm kết thúc. Đặc biệt, trừ khi có các tham chiếu vòng tròn, CPython là cách triển khai Python tiêu chuẩn sẽ thu thập rác ngay lập tức.

Thuộc tính duy nhất của thu thập rác trong Python là nó xảy ra sau khi tất cả các tham chiếu đã bị xóa, vì vậy điều này có thể không nhất thiết xảy ra ngay sau đó và thậm chí có thể không xảy ra.

Thậm chí hơn thế, các biến có thể tồn tại trong một thời gian dài vì nhiều lý do, chẳng hạn. một ngoại lệ lan truyền hoặc phần nội quan mô-đun có thể giữ cho số lượng tham chiếu biến lớn hơn 0. Ngoài ra, biến có thể là một phần của tham chiếu vòng - CPython với tính năng thu gom rác được bật hầu hết, nhưng không phải tất cả, các chu kỳ như vậy và thậm chí sau đó chỉ định kỳ.

Có các trường hợp sử dụng hợp lệ cho __del__:ví dụ:nếu một đối tượng X tham chiếu đến Y và cũng giữ một bản sao của tham chiếu Y trong bộ đệm chung (cache ['X -> Y'] =Y) thì đối tượng X. __del__ cũng để xóa mục nhập bộ nhớ cache.

Nếu bạn biết rằng trình hủy cung cấp yêu cầu dọn dẹp, bạn có thể muốn gọi trực tiếp nó, x .__ del __ ().