Kontrola shody tříd
V předchozím cvičení jsi definoval/a třídu BankAccount s atributem number, který se používal pro porovnávání. Pokud bys ale porovnával/a objekt BankAccount s objektem jiné třídy, která má také atribut number, mohl/a bys dostat neočekávané výsledky.
Podívej se například na tyto dvě třídy:
|
|
Spuštění acct == pn vrátí True, i když porovnáváme telefonní číslo s číslem bankovního účtu.
Dobrá praxe je ověřit třídu objektů předaných metodě __eq__(), aby porovnání dávalo smysl.
Toto cvičení je součástí kurzu
Object-Oriented Programming in Python
Pokyny k cvičení
Obě třídy Phone i BankAccount jsou již definované. Spusť kód tlačítkem "Run code" a prohlédni si výstup.
- Uprav definici třídy
BankAccounttak, aby vracelaTruepouze tehdy, když je atributnumberstejný a zároveň je stejnýtype()obou předaných objektů.
Spusť kód znovu a prohlédni si výstup.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
class BankAccount:
def __init__(self, number, balance=0):
self.number, self.balance = number, balance
def withdraw(self, amount):
self.balance -= amount
# MODIFY to add a check for the type()
def __eq__(self, other):
return (self.number == other.number)
acct = BankAccount(873555333)
pn = Phone(873555333)
print(acct == pn)