W języku zorientowanym obiektowo klasa jest rozszerzalnym fragmentem kodu, który reprezentuje szablon do tworzenia i używania obiektów tej klasy. Obiekt klasy po prostu odnosi się do instancji zdefiniowanej klasy.
Podstawy klas w Pythonie
W języku programowania Python każda część danych jest reprezentowana jako instancja jakiejś klasy. Jeśli nie znasz języka, zapoznaj się z naszą przewodnik dla początkujących po Pythonie przed przejściem dalej.
Klasa zapewnia zestaw zachowań w postaci funkcji składowych (znanych również jako metody), których implementacje są wspólne dla wszystkie instancje tej klasy, a także określa sposób, w jaki informacje o stanie jej instancji są reprezentowane w postaci atrybuty.
Czytaj więcej: Metody klas w Pythonie: ważne różnice
Poniższy kod przedstawia przykład zdefiniowanej klasy w Pythonie. Klasa zdefiniowana w kodzie zapewnia implementację klasy RaceCar.
Każda instancja tej klasy zapewnia prosty model dla różnych marek samochodów i zawiera następujący stan informacje: nazwa samochodu, nazwisko kierowcy, numer rejestracyjny samochodu, aktualna prędkość, opłata za przekroczenie prędkości i kolor.
Ta klasa samochodów modeluje specjalny czujnik w każdym samochodzie, który rejestruje grzywnę w wysokości 50 USD na kierowcę samochodu, jeśli przekroczy on dozwolony prawem limit 140 mil na godzinę.
Przykład klasy (klasa samochodu)
klasa samochodu:
#Konstruktor
# metoda init jest odpowiedzialna za inicjalizację wartości zmiennych instancji w klasie.
def __init __ (self, nazwa_samochodu, nazwa_kierowcy, numer_licencji_licencji,
current_speed, speeding_charge, kolor):
self.car_name = nazwa_samochodu
self._driver_name = nazwa_kierowcy
self._license_plate_number = numer_licencji_plate
self._current_speed = current_speed
self._speeding_charge = speeding_charge
self._colour = kolor
#Accessor methods
# Metoda get_car_name zwraca nazwę samochodu
def get_car_name (self):
return self._car_name
# Metoda get_driver_name zwraca nazwę sterownika
def get_driver_name (self):
return self._driver_name
# Metoda get_license_plate zwraca numer rejestracyjny samochodu
def get_license_plate (self):
return self._license_plate
# Metoda get_current_speed zwraca bieżącą prędkość, z jaką samochód się # porusza
def get_current_speed (self):
return self._current_speed
# Metoda get_speeding_charge zwraca całkowitą kwotę pieniędzy, którą plik
Kierowca musi zapłacić za przekroczenie prędkości
def get_speeding_charge (self):
return self._speeding_charge
# Metoda get_colour zwraca kolor naszej słodkiej przejażdżki!
def get_colour (self):
return self._colour
# Metody mutatora
# Wartość set_driver zmienia kierowcę naszego samochodu.
def set_driver (self, new_driver):
self._driver_name = new_driver
# Metoda speeding_ticket zapewnia, że kierowca jest obciążany opłatą w wysokości 50 dolarów, gdy # złapie prędkość powyżej 140 mil na godzinę :(
def speeding_ticket (self, current_speed):
if current_speed <= 140:
return False
jeszcze:
self._speeding_charge + = 50
powrót True
# Metoda make_payment zapewnia, że kierowca jest w stanie zapłacić za całą kwotę, jaką jest winien za przekroczenie prędkości.
def make_payment (self, amount_paid):
self._speeding_charge - = kwota_płacona
Wyjaśnienie przykładu klasy Pythona
Parametr „Ja”
Po pierwsze, należy zauważyć, że istnieje różnica między sygnaturą metody zadeklarowaną w klasie a sygnaturą metody używaną przez programistę do wywołania funkcji. Na przykład get_colour metoda zdefiniowana w klasie przyjmuje jeden parametr, który jest parametrem „self”.
Jednak gdy programista wywołuje tę metodę na instancji klasy, nie podaje żadnych parametrów. To samo zjawisko można zaobserwować w metodzie speeding_ticket, która jest zdefiniowana tak, aby przyjmować dwa parametry w klasie (tj. Self i current_speed), ale programista może wykonać tę metodę, podając wartość tylko dla parametru „current_speed” parametr.
Dzieje się tak, ponieważ celem dostarczonego parametru „self” jest powiązanie metody z instancją obiektu, na którym została wywołana, a nie jest to wartość, którą ma podać programista.
Konstruktor
Konstruktor klasy odwołuje się do metody klasy, którą użytkownik może wywołać w celu utworzenia instancji obiektu tej klasy. W klasie Car użytkownik może utworzyć instancję obiektu przy użyciu następującej składni:
# tworzenie własnego Bugatti :)
Samochód („Bugatti”, „David Sasu”, 90828, 0, 0, „Cherry Red”)
Wykonanie tego kodu powoduje wywołanie metody __init__ w klasie Car. Zadaniem tej metody jest wygenerowanie nowo utworzonego obiektu samochodu kredytowego z podanymi wartościami instancji. Każdy obiekt klasy Car składa się z sześciu zmiennych instancji, którymi są:
- _car_name
- _imię kierowcy
- _license_plate
- _obecna prędkość
- _speeding_charge
- _kolor
Metody akcesoriów
Są to metody napisane w celu uzyskania dostępu do informacji o stanie instancji obiektu. W klasie Car napisane zostały metody akcesorów:
- get_car_name
- get_driver_name
- get_license_plate
- get_current_speed
- get_speeding_charge
- get_colour
Metody mutatorów:
Są to metody, które zostały napisane w celu zmiany informacji o stanie instancji obiektu. W klasie Car napisane metody mutatora to:
- set_driver
- speeding_ticket
- dokonać płatności
Pojęcie hermetyzacji
„Hermetyzacja” to termin używany do opisania zasady projektowania zorientowanego obiektowo, w której komponenty programu nie powinny ujawniać wewnętrznych szczegółów ich odpowiednich implementacji. Aby lepiej zrozumieć pojęcie hermetyzacji, zobacz nasze artykuł o hermetyzacji.
Sprawdzanie błędów
Nasza implementacja klasy Car nie jest solidna, ponieważ może ulec awarii lub nieprawidłowym działaniu w zależności od danych wejściowych, które otrzymuje od programisty.
Po pierwsze, zwróć uwagę, że nie sprawdzamy typów parametrów metod speeding_ticket i make_payment, ani nie sprawdzamy typów parametrów konstruktora. Może to doprowadzić do awarii programu, jeśli użytkownik poda argument, którego nie oczekiwano. Na przykład, jeśli użytkownik wykona wywołanie takie jak speeding_ticket („chips ahoy”), program ulegnie awarii, ponieważ typ oczekiwany przez metodę jest liczbą całkowitą, a nie łańcuchem.
Teraz rozumiesz podstawy klas języka Python
W tym artykule przedstawiono koncepcję klasy w języku Python i obiektu klasy w języku Python. Zostaliście również wprowadzeni w koncepcje, na podstawie których zbudowana jest klasa Pythona, takie jak: hermetyzacja, identyfikator „self”, metody akcesorów i metody mutatorów.
Mając te informacje, powinieneś być w stanie samodzielnie stworzyć prostą klasę Pythona i przetestować ją :)
Teraz musisz zweryfikować swoją tożsamość za pomocą urządzenia mobilnego, aby połączyć swoje konto w aplikacji komputerowej i internetowej.
- Programowanie
- Pyton
Zapisz się do naszego newslettera
Dołącz do naszego biuletynu, aby otrzymywać wskazówki techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Jeszcze jeden krok…!
Potwierdź swój adres e-mail w wiadomości e-mail, którą właśnie wysłaliśmy.