1. Nauka
  2. /
  3. Kursy
  4. /
  5. Programowanie obiektowe w Pythonie

Connected

ćwiczenie

Alternatywne konstruktory

Python pozwala też definiować metody klasowe – służy do tego dekorator @classmethod oraz specjalny pierwszy argument cls. Metody klasowe są najczęściej używane do tworzenia instancji klasy w sposób inny niż standardowy konstruktor __init__().

Przykładowo: tworzysz pakiet do analizy szeregów czasowych i chcesz zdefiniować własną klasę do obsługi dat – BetterDate. Klasa ma mieć atrybuty year, month i day. Chcesz mieć konstruktor tworzący obiekty BetterDate na podstawie podanych wartości roku, miesiąca i dnia, ale też możliwość tworzenia obiektów BetterDate z ciągów znaków takich jak 2020-04-30.

Przydatne funkcje:

  • Metoda .split("-") dzieli ciąg znaków przy "-" i zwraca tablicę, np. "2020-04-30".split("-") zwraca ["2020", "04", "30"],
  • int() konwertuje ciąg znaków na liczbę, np. int("2019") daje 2019.

Instrukcje 1/2

undefined XP
    1
    2

Dodaj metodę klasową from_str(), która:

  • przyjmuje ciąg znaków datestr w formacie 'YYYY-MM-DD',
  • dzieli datestr i konwertuje każdą część na liczbę całkowitą,
  • zwraca instancję klasy z atrybutami ustawionymi na wartości wyodrębnione z datestr.