Percebi que na comparação entre objetos de classe mãe e filha, a ordem dos parâmetros assumida no método eq é alterada.
Exemplo: Digamos que eu tenho uma classe Banco e uma sub-classe Conta_poupanca(Banco)
class Banco:
def __init__(self, num):
self._num_conta = num
self._saldo = 0
def __str__(self):
return f'#Conta = {self._num_conta}, Saldo = {self._saldo}#'
def __eq__(self, obj2):
print(f'Self = {self} e obj2 = {obj2}')
return True
class Conta_poupanca(Banco):
pass
Estanciando um objeto da classe Banco, outro da classe Conta_poupanca e chamando a comparação:
ct_banco = Banco(9000)
ct_poup = Conta_poupanca(1000)
print(ct_banco == ct_poup)
O resultado será: Self = #Conta = 1000, Saldo = 0# e obj2 = #Conta = 9000, Saldo = 0#
Ou seja, os objetos passados como parâmetro tiveram a ordem trocada na execução do método.
Isto é por conta do RMO (Method Resolution Order) que altera a ordem dos parâmetros por conta da hierarquia das classes?