Štábní kultura a třídy
Lekce 12
Úlohy
Spojový seznam (5b)
V GitLabu ve složce této lekce naleznete soubor linked.py.
Ten obsahuje vlastní implmentaci jednosměrného spojového
seznamu. Některé metody ale programátor zapomněl doimplementovat.
Příslušné nenaimplementované metody (označené TODO komentářem)
naimplementujte.
Zkrášlení repozitáře (2b)
Na dnešní hodině jsme se dozvěděli o určitých konvencích, jak by náš kód měl vypadat. Také jsme si stanovili, jak by asi bylo vhodné členit náš repozitář, aby se v něm vyznal každý.
Aplikujte tyto konvence na váš repozitář.
Co jsme dnes probrali
Štábní kultura
- PEP, konvence, jak by měl kód v Pythonu vypadat.
- Nainstalovali jsme si nové extensions do VS Code
- Pylint je věc, co vám podtrhává to, co je špatně (chyby, varování, doporučení)
- Black formatter vám kód hezky zarovnává a formátuje
- Nepoužívat Unicode znaky v názvech souborů a proměnných; pouze v komentářích a dokumentačních řetězcích
- V názvech souborů nepoužívat ani mezery
Třídy
- Třídy nám umožňují vzít několik souvisejících proměnných a zabalit je do jednoho typu.
- Například můžeme vytvořit třídu
Personpro reprezentaci osob.- Taková třída by mohla mít dvě proměnné (v kontextu tříd nazývané položky): jméno a datum narození.
- Třída je pouze šablona, která popisuje, jak vypadá osoba.
- Konkrétní osoby pak reprezentují instance třídy (také objekty).
- Každý objekt má své vlastní hodnoty položek. Nastavíme je při vytváření objektu, pak je můžeme číst a měnit, přistupujeme k nim pomocí tečky.
- Máme-li konkrétní osobu v proměnné
p1, její položky jsoup1.nameap1.date_of_birth.
- Máme-li konkrétní osobu v proměnné
- ukázka
- Kromě položek může mít třída i své vlastní funkce, nazývané metody.
- Metody jsou funkce, které přistupují k položkám objektu.
- Definují se uvnitř třídy. Stejné funkce by šlo definovat i mimo třídu, objekt by dostávaly jako argument.
- Jsou-li definované uvnitř třídy, pak volání
p1.f()zavolá funkcif(p1), tedy automaticky předá objekt jako první argument. - V Pythonu se první argument konvenčně pojmenovává
self.
- Složitější příklad: spojový seznam
- Některé položky a metody začínají
_. To značí, že jsou privátní.- Měly by být používány jen uvnitř třídy, zajišťují implementační detaily.
- Představte si, že pracujete ve vícečlenném týmu. Každý vývojář napíše jednu třídu, kterou potom použijí ostatní.
- Třída má nějaké veřejné rozhraní, tedy metody a položky, které jsou určeny k použití zvenčí.
- Implementace veřejných metod může používat privátní metody a položky, které by neměly být změněny zvenčí.
- Příkladem je
_len, tedy délka seznamu. Nechceme povolit, aby tuto hodnotu někdo zvenčí jen tak změnil. - Proto nabízíme veřejnou metodu
__len__, která délku vrátí, ale neumožňuje ji změnit.
- Metody začínající a končící dvěma podtržítky jsou speciální, Python jim dává další význam.
__init__je volána, když se vytvoří nový objekt.__len__se použije, pokud objekt předáme jako argument vestavěné funkcelen.
- Některé položky a metody začínají