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

Connected

ćwiczenie

Przeciążanie operatora równości

Gdy porównujesz dwa obiekty klasy niestandardowej za pomocą ==, Python domyślnie porównuje jedynie referencje do obiektów, a nie dane w nich zawarte. Aby zmienić to zachowanie, klasa może implementować specjalną metodę __eq__(), która przyjmuje dwa argumenty -- porównywane obiekty -- i zwraca True lub False. Metoda ta jest wywoływana niejawnie podczas porównywania dwóch obiektów.

Klasa BankAccount z poprzedniego rozdziału jest dostępna w panelu skryptu. Ma jeden atrybut, balance, oraz metodę withdraw(). Dwa konta bankowe z tym samym saldem niekoniecznie są tym samym kontem – konto bankowe ma jednak zazwyczaj numer konta, a dwa konta o tym samym numerze powinny być traktowane jako identyczne.

Instrukcje

100 XP

Zaznacz kod w liniach 1–7 i naciśnij przycisk „Uruchom kod". Następnie utwórz kilka obiektów BankAccount w konsoli i porównaj je ze sobą.

  • Zmodyfikuj metodę __init__(), aby przyjmowała nowy parametr – number – i inicjalizowała nowy atrybut number.
  • Zdefiniuj metodę __eq__(), która zwraca True, jeśli atrybut number dwóch obiektów jest równy.
  • Przeanalizuj instrukcje print i wyniki wyświetlone w konsoli.