🥕 Abstrakcyjne klasy nadrzędne

Są to klasy służące jako szablony, które definiują strukturę i wymuszone metody dla klas pochodnych, ale same nie mogą być inicjalizowane. Używają dekoratora @abstractmethod do oznaczenia metod, które muszą być zaimplementowane w klasach pochodnych.

Korzyści wynikające z wykorzystywania abstrakcyjnych klas nadrzędnych
  • Spójność – wymusza implementację określonych metod.
  • Reużywalność – pozwala dzielić metody między klasami.
  • Polimorfizm – umożliwia jednolite używanie różnych klas.
from abc import ABC, abstractmethod

class Zwierze(ABC):
    # Ta metoda jest abstrakcyjna,
    # wymagana jest jej implementacja w klasach pochodnych
    @abstractmethod
    def wydaj_dzwiek(self):
        pass

class Pies(Zwierze):
    def wydaj_dzwiek(self):
        return "Hau hau!"

class Kot(Zwierze):
    def wydaj_dzwiek(self):
        return "Miau miau!"