Zdravím vás! Naučil jsem se pracovat se speciálními metodami u tříd, je to super. Představte si, že budete chtít testovat rovnost dvou různých datových typů, v mém kódu jde o porovnání čísel. (další text je pod kódem)
class zt:
def __init__(self, cislo = "0"):
self.cislo = cislo
def __eq__(self, cislo):
return int(self.cislo) == cislo
zt1 = zt()
Já do té metody __eq__ píšu argumenty nejdřív self, jakožto odkaz na instanci té třídy a druhý argument je >cislo< , což má být číslo typu int .
Otázka: Když mám v pořadí vždycky hned self a po něm něco jiného, musím u testování rovnosti také nejdřív používat instanci té třídy (třeba zt1 == 0) nebo si můžu dovolit pořadí operandů prohodit? (0 == zt1)
Mně to funguje i s tím prohozením, ale jasno nemám v tom, jestli na tom pořadí argumentů záleží nebo ne. Víte, co tím myslím? Když napíšu 0 == zt1, zavolá se metoda __eq__ u té nuly, jakožto u instance třídy int nebo __eq__ u instance třídy zt?