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.