Výuka IT

Procvičování: Třídy

Třídy jsou základním stavebním kamenem objektově orientovaného programování (OOP) v Pythonu. V této sekci si vyzkoušíte definování tříd, vytváření instancí, práci s konstruktorem, atributy a metodami. Níže najdete tři úkoly, které vám pomohou lépe pochopit tyto koncepty.

Úkol 1: Třída Pes

Vytvořte třídu Pes, která bude mít atributy jmeno (řetězec) a vek (celé číslo). Přidejte metodu stekej, která vypíše zprávu ve formátu "[jmeno], [vek] let starý, říká: Haf haf!". Použijte konstruktor __init__ pro nastavení atributů při vytvoření instance.

Řešení

class Pes:
    def __init__(self, jmeno, vek):
        self.jmeno = jmeno
        self.vek = vek
    
    def stekej(self):
        print(f"{self.jmeno}, {self.vek} let starý, říká: Haf haf!")
        
# Test
muj_pes = Pes("Azor", 5)
muj_pes.stekej()  # Výstup: Azor, 5 let starý, říká: Haf haf!

Úkol 2: Třída Skola

Vytvořte třídu Skola s třídní proměnnou nazev nastavenou na "Základní škola". Každá instance bude mít instanční proměnnou jmeno_studenta. Přidejte metodu info, která vypíše "[jmeno_studenta] studuje na [nazev]". Vytvořte dvě instance a otestujte změnu třídní proměnné.

Řešení

class Skola:
    nazev = "Základní škola"
    
    def __init__(self, jmeno_studenta):
        self.jmeno_studenta = jmeno_studenta
    
    def info(self):
        print(f"{self.jmeno_studenta} studuje na {self.nazev}")
        
# Test
student1 = Skola("Jan Novák")
student2 = Skola("Eva Svobodová")
student1.info()  # Výstup: Jan Novák studuje na Základní škola
student2.info()  # Výstup: Eva Svobodová studuje na Základní škola

# Změna třídní proměnné
Skola.nazev = "Gymnázium"
student1.info()  # Výstup: Jan Novák studuje na Gymnázium
student2.info()  # Výstup: Eva Svobodová studuje na Gymnázium

Úkol 3: Třída Kruh

Vytvořte třídu Kruh s třídní proměnnou pi nastavenou na 3.14159. Přidejte třídní metodu vypocitej_obvod (použijte dekorátor @classmethod), která přijme parametr polomer a vrátí obvod kruhu (2 * pi * polomer). Otestujte metodu bez vytvoření instance.

Řešení

class Kruh:
    pi = 3.14159
    
    @classmethod
    def vypocitej_obvod(cls, polomer):
        return 2 * cls.pi * polomer
        
# Test
obvod = Kruh.vypocitej_obvod(5)
print(f"Obvod kruhu s poloměrem 5 je: {obvod}")  # Výstup: Obvod kruhu s poloměrem 5 je: 31.4159