Jak działa dziedziczenie w Pythonie?

Dziedziczenie to jedna z fundamentalnych koncepcji programowania obiektowego, umożliwiająca klasom przejmowanie atrybutów i metod z innych klas. W Pythonie mechanizm ten pozwala na tworzenie hierarchii klas, co ułatwia zarządzanie kodem i jego ponowne wykorzystanie. Ale jak dokładnie dziedziczenie funkcjonuje w Pythonie? Odpowiedź na to pytanie znajdziesz w poniższym artykule.

Przykład kodu z dziedziczeniem

Zacznijmy od przykładu, który pokaże nam dziedziczenie w akcji. Stwórzmy prostą hierarchię klas, gdzie klasa bazowa Vehicle (Pojazd) będzie dziedziczona przez klasy Car (Samochód) i Bike (Rower).

class Vehicle:
    # Konstruktor klasy bazowej
    def __init__(self, brand, model):
        self.brand = brand
        self.model = model

    # Metoda wyświetlająca informacje o pojeździe
    def display_info(self):
        print(f"Marka: {self.brand}, Model: {self.model}")

class Car(Vehicle):
    # Konstruktor klasy dziedziczącej dodaje nowy atrybut
    def __init__(self, brand, model, horsepower):
        super().__init__(brand, model)  # Wywołanie konstruktora klasy bazowej
        self.horsepower = horsepower

    # Nadpisanie metody z klasy bazowej
    def display_info(self):
        super().display_info()  # Wywołanie metody z klasy bazowej
        print(f"Moc [KM]: {self.horsepower}")

class Bike(Vehicle):
    # Konstruktor klasy dziedziczącej, bez dodatkowych atrybutów
    def __init__(self, brand, model, is_electric):
        super().__init__(brand, model)
        self.is_electric = is_electric

    # Nadpisanie metody z klasy bazowej
    def display_info(self):
        super().display_info()
        print(f"Elektryczny: {'Tak' if self.is_electric else 'Nie'}")

# Utworzenie instancji klasy Car
car = Car("Tesla", "Model S", 420)
car.display_info()

# Utworzenie instancji klasy Bike
bike = Bike("Trek", "Powerfly", True)
bike.display_info()

W tym przykładzie, klasa Vehicle jest klasą bazową z podstawowymi atrybutami brand i model, oraz metodą display_info() do wyświetlania informacji o pojeździe. Klasy Car i Bike dziedziczą z klasy Vehicle, rozszerzając jej funkcjonalność o dodatkowe atrybuty oraz nadpisując metodę display_info() w celu dostosowania wyświetlanych informacji do konkretnego typu pojazdu.

Kluczowe momenty:

  • super().__init__(brand, model) – wywołanie konstruktora klasy bazowej w celu inicjalizacji wspólnych atrybutów.
  • super().display_info() – wywołanie metody z klasy bazowej w celu wykorzystania jej funkcjonalności i rozszerzenia o dodatkowe informacje specyficzne dla klasy dziedziczącej.

Podsumowanie

Dziedziczenie w Pythonie umożliwia tworzenie bardziej zorganizowanego i łatwiejszego w utrzymaniu kodu poprzez współdzielenie atrybutów i metod między klasami. Dzięki wykorzystaniu super() można wywołać metody klasy bazowej w klasach dziedziczących, co pozwala na ich rozszerzenie bez konieczności duplikowania 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