Co to są metody magiczne lub metody dunder w Pythonie?

Metody magiczne, znane również jako metody dunder (od podwójnego podkreślenia na początku i końcu nazwy), to specjalne metody w Pythonie, które są wywoływane automatycznie przez interpreter Pythona w odpowiedzi na określone operacje. Na przykład, metoda __init__ służy do inicjalizacji nowych obiektów, natomiast __str__ definiuje, jak obiekt powinien być przedstawiony w formie tekstowej. Dzięki metodom magicznym możemy definiować i dostosowywać zachowanie naszych klas w Pythonie, włączając w to operacje takie jak dodawanie, odejmowanie, porównywanie obiektów, a także wiele innych.

Przykład kodu

Aby zilustrować, jak działają metody magiczne, rozważmy klasę Book, która reprezentuje książkę w bibliotece. Dodamy metody magiczne, aby umożliwić porównywanie książek według liczby stron oraz reprezentować książkę jako string.

class Book:
    def __init__(self, title, author, pages):
        # Inicjalizacja nowego obiektu
        self.title = title
        self.author = author
        self.pages = pages

    def __str__(self):
        # Reprezentacja obiektu jako string
        return f"{self.title} by {self.author}"

    def __lt__(self, other):
        # Porównanie dwóch książek (<)
        return self.pages < other.pages

    def __eq__(self, other):
        # Sprawdzenie, czy dwie książki są równe (==)
        return self.pages == other.pages

# Tworzenie instancji książek
book1 = Book("W pustyni i w puszczy", "H. Sienkiewicz", 310)
book2 = Book("Pan Tadeusz", "A. Mickiewicz", 340)

# Wyświetlenie książek
print(book1)  # Wypisuje "W pustyni i w puszczy by H. Sienkiewicz"
print(book2)  # Wypisuje "Pan Tadeusz by A. Mickiewicz"

# Porównanie książek
print(book1 < book2)  # True - książka book1 ma mniej stron niż book2
print(book1 == book2)  # False - książki mają różną liczbę stron

Podsumowanie

Metody magiczne w Pythonie oferują potężne narzędzia do personalizacji i rozszerzania zachowań naszych klas. Pozwalają one na elegancką integrację z wbudowanymi operacjami języka Python, takimi jak porównywanie obiektów, ich reprezentacja tekstowa i wiele innych. Dzięki nim nasz kod staje się bardziej wyrazisty i zintegrowany z językiem Python, co ułatwia zarówno pisanie, jak i czytanie kodu.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs Python od podstaw w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top