Klasy Pythona i programowanie obiektowe

Kompletne wprowadzenie do klas, obiektów, dziedziczenia i pojęć OOP w Pythonie. Twórz niezawodne modele danych i skaluj swoje aplikacje w Pythonie.

Spróbuj w Edytorze

Przegląd

Programowanie obiektowe (OOP) to potężny paradygmat programowania często wykorzystywany w języku Python do tworzenia dużych, złożonych aplikacji. W przeciwieństwie do programowania proceduralnego, które koncentruje się na pisaniu funkcji sekwencyjnych, OOP opiera się na koncepcji „obiektów”. Obiekt to samodzielna jednostka, która łączy w sobie zarówno dane (tzw. atrybuty), jak i zachowania (tzw. metody).

„Klasa” w Pythonie pełni rolę planu lub szablonu do tworzenia obiektów. Pomyśl o zajęciach jak o projekcie architektonicznym domu. Sam projekt nie jest domem, ale określa, jak dom będzie wyglądał i jakie będzie miał cechy. Tworząc instancję klasy, tworzysz namacalny „obiekt” lub „instancję” zbudowaną na podstawie tego planu. Możesz utworzyć setki unikalnych instancji z jednej klasy.

Najważniejszym elementem klas Pythona jest metoda `__init__()`, często nazywana konstruktorem. Ta specjalna metoda jest wykonywana automatycznie dokładnie w momencie utworzenia nowego obiektu z klasy. Odpowiada za inicjalizację domyślnego stanu obiektu, dołączenie do niego określonych atrybutów. Parametr `self` jest obowiązkowo przekazywany do metod instancji, działając jako odniesienie do konkretnego obiektu, na którym manipuluje się.

Jednym z najmocniejszych filarów OOP jest dziedziczenie. Dziedziczenie umożliwia utworzenie nowej klasy (klasy podrzędnej), która dziedziczy wszystkie atrybuty i metody istniejącej klasy (klasy nadrzędnej). Sprzyja to masowemu ponownemu wykorzystaniu kodu. Możesz na przykład mieć ogólną klasę „Pojazd”, a następnie utworzyć klasy podrzędne „Samochód” i „Ciężarówka”, które dziedziczą po klasie „Pojazd”, ale dodają własne, specyficzne zachowania.

Inną podstawową koncepcją jest enkapsulacja, czyli pomysł ukrywania wewnętrznego stanu obiektu i wymagania, aby cała interakcja odbywała się za pomocą wyznaczonych metod. Chociaż Python nie ma ścisłych modyfikatorów dostępu, takich jak „prywatny” czy „chroniony”, opiera się na konwencjach nazewnictwa (takich jak poprzedzanie zmiennej znakiem podkreślenia „_”), aby zasygnalizować, że atrybutem nie należy manipulować bezpośrednio spoza klasy.

Dane wyjściowe kodu i wykonania

Zdefiniowanie ścisłej reprezentacji instancji obiektu Car i wykorzystanie metod klasowych do mutowania danych instancji lokalnej.

oop_example.py
Spróbuj w Edytorze
class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model
        self.is_running = False

    def start(self):
        self.is_running = True
        return f"{self.make} {self.model} has started."

my_car = Car("Toyota", "Corolla")
print(my_car.make)
print(my_car.start())
Wyjście terminala
Toyota
Toyota Corolla has started.

Wdrażanie krok po kroku

  • Modelowanie bytów ze świata rzeczywistego (Użytkownicy, Produkty, Koszyki)
  • Budowa silników gier i systemów encji-komponentów
  • Tworzenie komponentów graficznego interfejsu użytkownika wielokrotnego użytku

Często zadawane pytania

Co oznacza „ja”?

„self” reprezentuje instancję klasy. Używając słowa kluczowego „self”, możemy uzyskać dostęp do atrybutów i metod klasy w Pythonie.

Czy Python obsługuje wielokrotne dziedziczenie?

Tak, Python pozwala klasie dziedziczyć z wielu klas nadrzędnych.

Powiązane tematy

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.