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.