V objektově orientovaném jazyce je třída rozšiřitelná část kódu, která představuje šablonu pro vytváření a používání objektů této třídy. Objekt třídy jednoduše odkazuje na instanci definované třídy.

Základy třídy Python

V programovacím jazyce Python je každá část dat představována jako instance nějaké třídy. Pokud nejste obeznámeni s jazykem, podívejte se na náš průvodce pro Python pro začátečníky před pokračováním.

Třída poskytuje sadu chování ve formě členských funkcí (označovaných také jako metody), které mají společné implementace všechny instance této třídy a také určuje způsob, jakým jsou informace o stavu pro její instanci reprezentovány ve formě atributy.

Přečtěte si více: Metody tříd v Pythonu: Důležité rozdíly

Níže uvedený kód představuje příklad definované třídy v Pythonu. Třída definovaná v kódu poskytuje implementaci třídy RaceCar.

Každá instance třídy poskytuje jednoduchý model pro různé značky automobilů a obsahuje následující stav informace: název automobilu, jméno řidiče, SPZ vozidla, aktuální rychlost, poplatek za překročení rychlosti a barva.

instagram viewer

Tato třída automobilů modeluje v každém automobilu speciální senzor, který zaznamená pokutu 50 $ proti řidiči automobilu, pokud překročí zákonnou rychlostní limit 140 mil za hodinu.

Příklad třídy (třída automobilu)


třída auto:
# Konstruktor
# metoda init je zodpovědná za inicializaci hodnot instance #variables ve třídě.
def __init __ (self, car_name, driver_name, license_plate_number,
current_speed, speeding_charge, color):
self.car_name = car_name
self._driver_name = driver_name
self._license_plate_number = licenční_číslo_čísla
self._current_speed = aktuální_rychlost
self._speeding_charge = speeding_charge
self._colour = barva
# Metody přístupu
# Metoda get_car_name vrací název vozu
def get_car_name (self):
návrat self._car_name
# Metoda get_driver_name vrací název ovladače
def get_driver_name (self):
návrat self._driver_name
# Metoda get_license_plate vrací poznávací značku automobilu
def get_license_plate (self):
vrátit self._license_plate
# Metoda get_current_speed vrací aktuální rychlost, při které se auto pohybuje
def get_current_speed (self):
návrat self._current_speed
# Metoda get_speeding_charge vrátí celkovou částku peněz, kterou
#driver musí platit za překročení rychlosti
def get_speeding_charge (self):
návrat self._speeding_charge
# Metoda get_colour vrací barvu naší sladké jízdy!
def get_colour (self):
návrat self._colour
# Metody mutátoru
# Hodnota set_driver mění řidiče našeho vozu.
def set_driver (self, new_driver):
self._driver_name = new_driver
# Metoda speeding_ticket zajišťuje, že řidiči bude účtováno 50 babek, když # chytil rychlost vyšší než 140 mil za hodinu :(
def speeding_ticket (self, current_speed):
pokud current_speed <= 140:
vrátit False
jiný:
self._speeding_charge + = 50
vrátit True
Metoda make_payment zajišťuje, že řidič je schopen zaplatit veškerou # částku, kterou dluží za poplatky za překročení rychlosti.
def make_payment (self, amount_paid):
self._speeding_charge - = částka_placeno

Vysvětlení příkladu třídy Pythonu

Parametr „Já“

Nejprve si všimněte, že existuje rozdíl mezi podpisem metody deklarovaným ve třídě a podpisem metody, kterou programátor používá k volání funkce. Například get_colour metoda definovaná ve třídě vyžaduje jeden parametr, kterým je parametr „self“.

Když však programátor volá tuto metodu na instanci třídy, neposkytuje žádné parametry. Stejný jev lze pozorovat v metodě speeding_ticket, která je definována tak, aby brala dva parametry ve třídě (tj. Self a current_speed), ale programátor je schopen provést tuto metodu zadáním hodnoty pouze pro „current_speed“ parametr.

Je to proto, že účelem poskytnutého parametru „self“ je svázat metodu s instancí objektu, na kterou byla volána, a nejde o hodnotu, kterou má programátor uvést.

Konstruktor

Konstruktor třídy odkazuje na metodu třídy, kterou může uživatel zavolat, aby vytvořil instanci objektu této třídy. Ve třídě Car může uživatel vytvořit instanci objektu pomocí následující syntaxe:

#vytváření našich vlastních Bugatti :)
Auto („Bugatti“, „David Sasu“, 90828, 0, 0, „Cherry Red“)

Provedení tohoto kódu má za následek volání metody __init__ ve třídě Car. Odpovědností této metody je generovat nově vytvořený objekt kreditní auto s poskytnutými hodnotami instance. Každý objekt třídy Car je tvořen šesti proměnnými instance, které jsou:

  • _car_name
  • _driver_name
  • _poznávací značka
  • _aktuální rychlost
  • _rychlost_platku
  • _barva

Přístupové metody

Jedná se o metody, které jsou zapsány pro přístup ke stavovým informacím instance objektu. Ve třídě Car jsou přístupové metody, které byly zapsány:

  • get_car_name
  • get_driver_name
  • get_license_plate
  • get_current_speed
  • get_speeding_charge
  • get_colour

Metody mutátorů:

Jedná se o metody, které jsou zapsány za účelem změny informací o stavu instance objektu. Ve třídě Car byly napsány metody mutátorů:

  • set_driver
  • pokuta za rychlost
  • zaplatit

Koncept zapouzdření

„Zapouzdření“ je termín, který se používá k popisu principu objektově orientovaného designu, kde by komponenty programu neměly odhalovat vnitřní podrobnosti jejich příslušných implementací. Chcete-li lépe porozumět pojmu zapouzdření, podívejte se na náš článek o zapouzdření.

Kontrola chyb

Naše implementace třídy Car není robustní, protože je pravděpodobné, že dojde k chybě nebo poruše v závislosti na vstupu, který obdrží od programátora.

Nejprve si všimněte, že nekontrolujeme typy parametrů speeding_ticket a make_payment metod, ani nekontrolujeme typy žádných z parametrů konstruktoru. To by mohlo vést k havárii programu, pokud uživatel poskytne argument, který se neočekával. Například pokud uživatel zavolá, jako je speeding_ticket („chipy ahoy“), program by selhal, protože typ, který metoda očekávala, bylo celé číslo a ne řetězec.

Nyní chápete základy třídy Python

V tomto článku vám byl představen koncept třídy Python a objektu třídy Python. Také vám byly představeny myšlenky, na kterých je postavena třída pythonu, například: zapouzdření, identifikátor „já“, metody přístupového objektu a metody mutátoru.

S těmito informacemi byste měli být schopni sami vytvořit jednoduchou třídu Pythonu a otestovat ji :)

E-mailem
WhatsApp prosazuje biometrické ověřování pro přístup na plochu a web

Nyní budete muset ověřit svou identitu prostřednictvím mobilního zařízení, abyste mohli propojit svůj účet s počítačem a webovou aplikací.

Související témata
  • Programování
  • Krajta
O autorovi
David Sasu (1 Publikované články)Více od Davida Sasu

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji s technickými tipy, recenzemi, bezplatnými elektronickými knihami a exkluzivními nabídkami!

Ještě jeden krok…!

V e-mailu, který jsme vám právě poslali, potvrďte svou e-mailovou adresu.

.