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.

instagram viewer

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ą :)

E-mail
WhatsApp wymusza uwierzytelnianie biometryczne w przypadku dostępu do komputera i Internetu

Teraz musisz zweryfikować swoją tożsamość za pomocą urządzenia mobilnego, aby połączyć swoje konto w aplikacji komputerowej i internetowej.

Powiązane tematy
  • Programowanie
  • Pyton
O autorze
David Sasu (1 opublikowanych artykułów)Więcej od Davida Sasu

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.

.