Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Method destructor __del__() trong Python hoạt động như thế nào?

__del__() là destructor method. Được gọi khi object bị garbage collected - xảy ra sau khi tất cả reference đến object bị xóa.

  • Trường hợp đơn giản: ngay sau del x hoặc biến local hết scope khi function kết thúc.
  • CPython (implementation chuẩn) garbage collect ngay lập tức nếu không có circular reference.
  • Chỉ đảm bảo: GC xảy ra sau khi tất cả reference bị xóa - có thể không ngay lập tức, thậm chí không bao giờ.

Lý do object sống lâu

  • Exception đang propagate giữ reference
  • Module introspection
  • Circular reference (CPython GC định kỳ phá vỡ hầu hết nhưng không phải tất cả)

Use case hợp lệ

class X:
    def __init__(self, y):
        self.y = y
        global_cache['X->Y'] = y  # Cache toàn cục
    
    def __del__(self):
        # Dọn dẹp cache entry
        global_cache.pop('X->Y', None)

Lưu ý: Nếu cleanup bắt buộc, hãy gọi trực tiếp x.__del__() hoặc dùng context manager (with), try/finally, weakref.finalize.