Przejdź do głównej treści

Metoda __del__ w Pythonie

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

Metoda __del__ w Pythonie

__del__ to specjalna metoda w Pythonie wykonywana automatycznie podczas niszczenia obiektu, czyli wtedy, gdy obiekt ma zostać usunięty z pamięci przez mechanizm zarządzania pamięcią. Pełni rolę podobną do destruktora znanego z innych języków programowania.

Składnia

class Plik:
    def __del__(self):
        print("Obiekt jest niszczony")

Metoda __del__ należy do tzw. metod specjalnych, nazywanych też metodami magicznymi lub dunder methods, ponieważ jej nazwa zaczyna się i kończy podwójnym podkreśleniem.

Przykład użycia

class Test:
    def __init__(self):
        print("Utworzono obiekt")

    def __del__(self):
        print("Usunięto obiekt")

obiekt = Test()
del obiekt

Przykładowy wynik:

Utworzono obiekt
Usunięto obiekt

Ważne informacje egzaminacyjne

  • __init__ jest wykonywana przy tworzeniu obiektu.
  • __del__ jest wykonywana przy niszczeniu obiektu.
  • __str__ zwraca tekstową reprezentację obiektu dla użytkownika.
  • __repr__ zwraca techniczną reprezentację obiektu, przydatną np. podczas debugowania.

Uwaga praktyczna

Nie należy zakładać, że __del__ wykona się zawsze natychmiast po instrukcji del. W Pythonie usuwaniem obiektów zajmuje się mechanizm zarządzania pamięcią i garbage collector. Dlatego do zwalniania zasobów, np. plików lub połączeń sieciowych, często lepiej używać instrukcji with i menedżerów kontekstu.