Klasa będzie musiała przetrzymywać w sobie wartość liczby. Będziemy ją zapisywać do __value. Dodatkowo aby ułatwić sobie obliczenia nauczymy naszą klasę "konwertować się do inta" :) Bo przecież bądź co bądź chodzi o obliczenia na liczbach.
class Mod5(object):Metoda __init__ pobiera jeden argument, liczbę którą jest nasz obiekt. Oczywiście nie sprawdzamy mnóstwa różnych rzeczy. czy liczba jest w naszym zakresie, czy to na pewno liczba całkowita itd... Metoda __int__ wywoła się w momencie, w którym nasz obiekt będzie konwertowany na int. Wykorzystujemy to w metodzie __add__. Jako pierwszy argument przyjmuje samego "siebie" oraz drugi obiekt ten po symbolu "+". Konwertujemy obia te obiekty (siebie i ten drugi) na inta. Otrzymujemy więc nie obiekt klasy Mod5, ale liczbę :) dodajemy je i robimy modulo 5. Linijki poniżej to już tylko test - czy działa :)
def __init__(self, value):
self.__value = value
def __int__(self):
return self.__value
def __add__(self, b):
return ((int(self) + int(b)) % 5)
if __name__ == '__main__':
a = Mod5(5)
b = Mod5(7)
print a + b
Jak widać przeładowywanie operatorów, czy nawet modelowanie klasy, która będzie miałą możliwość rzutowania na najróżniejsze inne typy (naprawdę tutaj są ogromne możliwości, może być rzutowana na complex, long nawet na listę czy krotkę), wszystko to jest banalnie proste i łatwe :) Wystarczy zajrzeć do odpowiednigo działu dokumentacji Pythona :) i
No comments:
Post a Comment