Dodatek 2: funkcje specjalne w klasach

Na lekcji 4 dowiedzieliście się jak budować klasy, poznaliście jak zainicjalizować obiekt danej klasy oraz co to są metody instancji. Wspomnieliśmy też o dziwnych funkcjach - tych, które zaczynają, bądź kończą się jednym, bądź dwoma znakami podłogi. Te z nich, które zaczynają i kończą się dwoma, np __init__ nazywane są funkcjami (lub metodami) specjalnymi. Dwie z nich już znasz

Nie będziemy tutaj opisywać wszystkich tych funkcji. Zamiast tego postaramy się pokazać na przykładzie jak je wykorzystać, by tworzyć nieco bardziej intuicyjne typy danch za pomocą klas. Jeżeli interesują cię one wszystkie odsyłamy do dokumentacji języka Python.

Jednym z zadań do lekcji 4 było skonstruowanie klasy opisującej wektory na płaszczyźnie. Tam mieliśmy poznać dziedziczenie. Tutaj zajmiemy się zagadnieniem metod specjalnych. Zaczniemy od konstrukcji samej klasy, tak by realizowała dodawanie i odejmowanie wektorów

Aby teraz dodać/odjąć dwa wektory musimy użyć metod dodaj lub odejmij, tak jak widać to w powyższym ActiveCode. Bardziej naturalną metodą było by natomiast użycie operatora + lub -, pisząc

w3 = w1 + w2
w4 = w1 - w2

Aby to osiągnąć posłużymy się właśnie funkcjami specjalnymi. Jedną będzie __add__, która odpowiada za implementację operatora + w danej klasie oraz __sub__, która definiuje zachowanie operatora -. W zasadzie wystarczy stare funkcje zastąpić tymi specjalnymi.

To własnie takie proste. Poeksperymentuj z innymi funkcjami. Jak masz ochotę, możesz też zrobić zadanie...

Zadanie

Wektory można porównywać, np. jeden może być dłuższy od drugiego. Oprogramuj zachowanie się operatorów porównania >, <, >=, <=, ==, !=. Poczytaj też o funkcji __repr__. Czym różni się ona od __str__?

Next Section - Dodatek 3: wykresy