3. diel - Atribúty a metódy v Pythone
V predchádzajúcej lekcii, Prvá objektová aplikácia v Pythone - Hello object world, sme si ukázali, ako OOP funguje, vysvetlili sme si pojmy trieda a metóda. Naprogramovali sme si našu prvú objektovú aplikáciu.
V dnešnej lekcii Pythonu si uvedieme parametre metód, naučíme sa používať atribúty a tým dokončíme našu prvú objektovú aplikáciu. Nakoniec si ukážeme využitie komentárov.
Parametre metódy
Dajme teraz našej metóde greet() parameter name,
aby dokázala pozdraviť konkrétneho používateľa. Prejdeme do súboru
greeter.py a takto kód upravme:
def greet(self, name): print(f"Hello user {name}")
Vidíme, že syntax parametra metódy je rovnaká, ako syntax premennej. Keby sme chceli parametrov viac, oddeľujeme ich čiarkou. Upravíme tiež kód pod triedou:
class Greeter:
def greet(self, name):
print(f"Hello user {name}")
greeter = Greeter()
greeter.greet("Carl")
greeter.greet("Peter")
A výsledok:
Output of greet() method:
Hello user Carl
Hello user Peter
Náš kód je teraz v metóde a my ho môžeme jednoducho pomocou parametrov volať znova s rôznymi parametrami. Nemusíme 2x opisovať "Hello user...". Kód budeme odteraz deliť logicky do metód.
Atribúty triedy
Triede pridáme nejaký atribút. Ponúka sa atribút text, kde
bude uložený text pozdravu. Atribúty sa definujú v priestore triedy rovnako
ako premenné. Keďže atribúty patria jednotlivým inštanciám objektu,
pristupujeme k nim cez parameter self, kde je vždy aktuálny
objekt, s ktorým pracujeme. Upravme teda našu triedu:
class Greeter: text = "" def greet(self, name): print(f"{self.text} {name}") greeter = Greeter() greeter.greet("Carl") greeter.greet("Peter")
Vidíme, že Greeter má nový atribút text.
Keďže inštancií zdraviča môžeme vytvoriť koľko chceme, prístup k
atribútu cez self.text zaistí, že sa text vezme z tej
inštancie, na ktoré je metóda zavolaná.
Na vyskúšanie zdraviča s textom teraz chýba už len text nastaviť vytvorenej inštancii:
class Greeter:
text = ""
def greet(self, name):
print(f"{self.text} {name}")
greeter = Greeter()
greeter.text = "Hello user"
greeter.greet("Carl")
greeter.greet("Peter")
greeter.text = "Hello programmer"
greeter.greet("Richard")
Výsledok:
Konzolová aplikácia
Hello user Carl
Hello user Peter
Hello programmer Richard
Návratová hodnota metódy
Vzhľadom k objektovému návrhu nie je najvhodnejšie, aby si každý objekt ovplyvňoval vstup a výstup, ako sa mu zachce. Pochopiteľne narážame na naše vypisovanie do konzoly. Každý objekt by mal mať určité kompetencie, ktoré by nemal prekračovať. Poverme náš objekt iba zostavením pozdravu a jeho výpis si spracujeme už mimo. Výhodou takto navrhnutého objektu je vysoká univerzálnosť a znovupoužiteľnosť. Objekt doteraz vie len písať do konzoly. My si ho však prispôsobíme tak, aby daná metóda text iba vracala. Bude potom iba na jeho príjemcovi, ako s ním naložia. Takto môžeme pozdravy ukladať do súborov, písať na webové stránky alebo ďalej spracovávať.
Na návrat hodnoty použijeme príkaz return. Príkaz
return metódu ukončí a vráti hodnotu. Akýkoľvek kód v tele
metódy po príkaze return sa už nevykoná! Upravíme metódu
greet():
def greet(self, name): return f"{self.text} {name}"
A náš program bude teraz vyzerať takto:
class Greeter:
text = "Hello"
def greet(self, name):
return f"{self.text} {name}"
greeter = Greeter()
greeter.text = "Hello user"
print(greeter.greet("Carl"))
print(greeter.greet("Peter"))
greeter.text = "Hello programmer"
print(greeter.greet("Richard"))
Teraz je náš kód podľa dobrých praktík.
Komentáre
Ešte našu triedu okomentujme ako sa patrí. Komentáre budeme písať pod
názov triedy a pod názov každého atribútu a metódy. Na ich zápis
použijeme tri dvojité úvodzovky ("""). Zdokumentovaná trieda
môže vyzerať napr. takto:
class Greeter: """ A class represents a greeter whose purpose is to greet the user. """ text = "Hello" """ An attribute containing the default greeting text. If no other text is specified, this default text will be used when creating a greeting. """ def greet(self, name): """ Returns a greeting for the user with the set text and given name. Parameters: - name (str): The given name of the person we want to greet. Output: - str: A greeting text with the person's given name. """ return f"{self.text} {name}"
Význam self
V Pythone je self jedným z kľúčových konceptov v objektovo
orientovanom programovaní a je dôležité ho pochopiť. Keď už vieme, čo je
inštancia a ako sa tvoria atribúty, poďme si ho vysvetliť jednoducho a
názorne.
Keď vytvárame objekt (inštanciu triedy), predstavíme si ho ako
špeciálny box. Každý box (objekt) má svoje vlastné dáta (atribúty) a
nástroje, ktoré s týmto boxom môžeme robiť (metódy). Keď chceme, aby box
(objekt) niečo urobil, potrebujeme spôsob, ako na tento konkrétny box
odkazovať. A práve self je spôsob, ktorým to dosiahneme.
A sme na konci. Za úlohu máte prerobiť si našu konzolovú kalkulačku do objektov.
V nasledujúcom kvíze, Kvíz - Úvod, objekty, triedy a metódy v Pythone, si vyskúšame nadobudnuté skúsenosti z predchádzajúcich lekcií.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 56x (1.55 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Python

David sa informačné technológie naučil na