1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Object-Oriented Programming in Python

Connected

cvičení

Alternativní konstruktory

Python umožňuje definovat také třídní metody pomocí dekorátoru @classmethod a speciálního prvního argumentu cls. Třídní metody se nejčastěji používají k definování metod, které vrací instanci třídy, ale nepracují se stejným kódem jako __init__().

Představme si, že vyvíjíš balíček pro práci s časovými řadami a chceš vytvořit vlastní třídu pro práci s daty – BetterDate. Atributy třídy budou year, month a day. Chceš mít konstruktor, který vytváří objekty BetterDate na základě zadaných hodnot roku, měsíce a dne, ale zároveň chceš umět vytvářet objekty BetterDate z řetězců jako 2020-04-30.

Můžou se ti hodit následující funkce:

  • Metoda .split("-") rozdělí řetězec na části podle "-", např. "2020-04-30".split("-") vrátí ["2020", "04", "30"],
  • int() převede řetězec na číslo, např. int("2019") je 2019.

Pokyny 1/2

undefined XP
    1
    2

Přidej třídní metodu from_str(), která:

  • přijímá řetězec datestr ve formátu 'YYYY-MM-DD',
  • rozdělí datestr a převede každou část na celé číslo,
  • vrátí instanci třídy s atributy nastavenými na hodnoty získané z datestr.