Python - praktický příklad na OOP (11. díl)

Napsal (») 15. 2. 2011 v kategorii Programování, přečteno: 1959×
banan/img/python-logo-glassy.png

Na závěr tutoriálu věnovanému OOP si ukážeme praktický příklad kde budeme ukládat zboží do skladu se dvěma parametry (název a kód).

hardware=sklad()

drgoherie=sklad()

... máme vytvořeny 2 sklady


hardware.pridat('Počítač',123456789)

drogerie.pridat('Shauma',65454654)

...přidáme něco do každého skladu (objektu)

hardware.vypis()

drogerie.vypis()

...vypíšeme zboží

Dále si ukážeme jak takový kód bude vypadat.

class sklad:
"Definice třídy se jménem sklad."

def __init__(self):
.."Inicializační metoda"

..self.nazev=[]
..self.kod=[]
..def pridej(self, nazev, kod):
.."Metoda na pridavani do seznamu."
.."Volání vypadá takto: pridej("Jirka",1234567)"
.."Přidá jméno a kód do datového typu seznam"

self.nazev.append(nazev)
self.kod.append(kod)
def vypis(self):
..."Vypis dosavadniho seznamu, vcetne minimalni kontroly na spravnost dat."

..if len(self.nazev)!=len(self.kod):
....print "Nekde se stala chyba, pocet produktů nesouhlasi s poctem cisel."
....print "Název produktu:", self.nazev
....print "Kód produktu:", self.kod

delka=len(self.nazev)
if not delka: "Pokud pocet cisel je nulový"
....print "V seznamu nejsou zadna cisla."
return
....for poradi in range(delka): "Samotný výpis který vyhověl všem kontrolám"
....print poradi,": ", self.nazev[poradi],"-", self.kod[poradi]

Začínáme definicí třídy se jménem sklad. Hned pod tím (podle slušného vychování) píšeme, o čem to vlastně je. Říká se tomu dokumentační řetězec a jeho využití je větší než obyčejné komentáře. Využití toho jsou dvě. První je v IDLE, když budeme tuto třídu používat, IDLE nám bude tento řetězec ukazovat jako bublinovou nápovědu.

Dále pak můžeme používat funkce na jako výzvu naprogramovanou v souboru.py, nebo klidně i v programu.

>>> hardware=sklad()
>>> hardware.pridej("Myš",1231548) Přidáme objekt myš do skladu s
>>> hardware.vypis()

0 : Myš - 1231548

__init__

Jako první metodu definujeme metodu __init__. Je to velmi zvláštní metoda a všechny takové zvláštní metody se v Pythonu poznají tak, že začínají a končí dvěma podtržítky. Tato metoda se spouští automaticky vždy při inicializaci nového seznamu. Nemusíme ji tedy volat, volá se sama (nebo spíše volá ji Python sám – stejně jako ostatní „podtržítkové“ metody). K jejímu volání dochází v těchto případech:

>>> hardware=sklad()
>>> drogerie=sklad()
>>> ... a podobně

Tato inicializační metoda inicializuje seznamy nazev a kod, které se pak využívají dále (SELF viz předchozí díl).


Inicializace znamená nastavení počátečních hodnot.


pridej()

Metoda pridej() přijímá dva argumenty – nazev a kod (pozor, nepleťte s proměnnými self.nazev a self.kod!) a jediné, co s nimi dělá je, že je přidá do patřičných seznamů.

vypis()

V metodě vypis (děláme malé kontroly - jestli se délka seznamu názvů rovná délce seznamu kódů. Jestli jsme prostě nějak omylem nezapsali jméno bez čísla anebo naopak. Stát by se to nemělo, ale pokud se to stane, je lepší o tom vědět. Možná by bylo lepší tuto část volat i po přidání názvu a kódu. No ale nechme to tak.
Dále kontrolujeme, zda jsme již do seznamu vůbec něco zapsali. Abychom to dali uživateli jasněji najevo, než když uděláme výpis seznamu, kde nebude nic. Rád bych se zastavil u řádky s return. Je zbytečné, a i nevhodné, aby se po vypsání hlášky, že v seznamu nic není, tento seznam ještě vypisoval. return udělá to, že předčasně funkci (metodu) ukončí/opustí. Akční část této metody je na posledních dvou řádcích . Zde se vypisuje seznam názvů zboží a kódů.


Doufám, že jste si ještě více osvětlili práci s OOP na tomto příkladu. Pokud rozumíte trochu anglicky, neváhejte se také podívat na www.python.org.

Štítky: Python
Hodnocení:     nejlepší   1 2 3 4 5   odpad
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Tomix z IP 94.113.157.*** | 22.4.2011 23:17
smile


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel sedm a jedna