Metody dunder, znane również jako magic methods lub special methods, to specjalne metody predefiniowane w Pythonie, których nazwy zaczynają się i kończą podwójnym podkreśleniem, np. __init__
czy __str__
. Są one kluczowym elementem, dzięki któremu Python wspiera programowanie obiektowe, umożliwiając definiowanie zachowań dla operacji takich jak inicjalizacja obiektu, reprezentacja obiektu jako string, operacje arytmetyczne i wiele innych. W tym artykule przyjrzymy się bliżej, jak działają metody dunder na przykładzie klasy reprezentującej książkę.
Przykład użycia metod dunder
Stwórzmy klasę Book
, która będzie wykorzystywać metody dunder do wykonania podstawowych operacji takich jak inicjalizacja, reprezentacja obiektu jako string i dodawanie dwóch obiektów klasy.
class Book:
def __init__(self, title, author, pages):
# Inicjalizacja atrybutów 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 __add__(self, other):
# Dodawanie liczby stron dwóch książek
if isinstance(other, Book):
return self.pages + other.pages
return NotImplemented
# Tworzenie obiektów klasy Book
book1 = Book("Python 101", "Jan Kowalski", 250)
book2 = Book("Advanced Python", "Anna Nowak", 300)
# Wyświetlenie reprezentacji obiektów jako string
print(book1) # Wypisze: Python 101 by Jan Kowalski
print(book2) # Wypisze: Advanced Python by Anna Nowak
# Dodawanie obiektów klasy Book
total_pages = book1 + book2
print(f"Łączna liczba stron: {total_pages}")
Podsumowanie
Metody dunder w Pythonie umożliwiają programistom definiowanie specyficznych zachowań dla obiektów ich klas, takich jak operacje arytmetyczne, konwersje na stringi i wiele innych. Dzięki temu można tworzyć kod, który jest czytelniejszy, bardziej ekspresyjny i lepiej oddaje zamiary programisty. Jak pokazano na przykładzie, stosowanie tych metod pozwala na łatwe i intuicyjne zarządzanie obiektami oraz interakcje między nimi, co czyni Pythona językiem przyjaznym i elastycznym w użyciu.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Python w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.