def fn(a: str, b: int, c: float = 0.5) -> float: ...
Programování v GIS 2
2025-03-24
většina jazyků nestojí striktně na jednom paradigmatu, ale využívá jich vícero
imperativní (kód popisuje, co se bude dít)
deklarativní (kód popisuje požadovaný výsledek)
Pozor
Proměnné s výchozí hodnotou musí být až za proměnnými bez výchozí hodnoty. Nelze mít proměnnou bez výchozí hodnoty za proměnnou s výchozí hodnotou funkce by nebyla validní a Python by vykazoval chybu při snaze takovou funkce načíst.
None
partial
z modulu functools
self
(označení instance objektu)_atribut
), tyto metody a atributy nebudou nápovědy v IDE navrhovat a programátor by se měl ideálně jejich použití vyhnout__init__
, __str__
, __add__
, __eq__
a další) a jejich použití@property
)self
@staticmethod
class Zamestnanec:
def __init__(self, jmeno: str, hodinovy_plat: float):
self.jmeno = jmeno
self._hodinovy_plat = hodinovy_plat
self.uvazek = 1.0
def plat(self) -> float:
return self._hodinovy_plat
def nastav_plat(self, hodinovy_plat: float) -> None:
self._hodinovy_plat = hodinovy_plat
def zvys_plat(self, navyseni_o: float) -> None:
self._hodinovy_plat += navyseni_o
def mesicni_plat(self, odpracovanych_hodin: float) -> float:
return self._hodinovy_plat * odpracovanych_hodin
## statická metoda, jedná se o ukázku, ale zde by mohla být i normální metoda
@staticmethod
def delka_pracovniho_dne(uvazek: float = 1.0) -> float:
return 8 * uvazek
@property
def hodin_denne(self) -> float:
return self.delka_pracovniho_dne(self.uvazek)
@property
def denni_plat(self) -> float:
return self._hodinovy_plat * self.hodin_denne
def __repr__(self) -> str:
return f"Zamestnanec {self.jmeno} s platem {self._hodinovy_plat} za hodinu"
odpracovane_hodiny = 160
zam = Zamestnanec("Testovaci Zamestnanec", 250)
print(f"Denní plat: {zam.denni_plat}")
zam.uvazek = 0.5
print(f"Denní plat: {zam.denni_plat}")
print(f"Plat: {zam.mesicni_plat(odpracovane_hodiny)}")
zam.zvys_plat(50)
print(f"Plat po zvýšení: {zam.mesicni_plat(odpracovane_hodiny)}")
Denní plat: 2000.0
Denní plat: 1000.0
Plat: 40000
Plat po zvýšení: 48000
Materiály dostupné: https://jancaha.github.io/vsb-vyuka/