Orientação a Objetos: Considere o seguinte programa em Python: class Data: def __init__(self, dia, mes, ano): self.dia = dia self.mes = mes self.ano = ano def __eq__(self, other): return self.dia == other.dia and self.mes == other.mes and self.ano == other.ano Assinale a alternativa correta:
Considere o seguinte programa em Python:
class Data: def init(self, dia, mes, ano): self.dia = dia self.mes = mes self.ano = ano
def __eq__(self, other):
return self.dia == other.dia and self.mes == other.mes and self.ano == other.ano
Assinale a alternativa correta:
a) Dois objetos desta classe d1 e d2 poderão ser comparados por meio de: d1 <= d2.
b) Dois objetos desta classe d1 e d2 poderão ser comparados por meio de: d1 == d2.
c) Dois objetos desta classe d1 e d2 poderão ser comparados por meio de: d1 < d2.
d) Dois objetos desta classe d1 e d2 poderão ser comparados por meio de: d1 > d2.
e) Dois objetos desta classe d1 e d2 poderão ser comparados por meio de: d1 >= d2.
O programa define a classe Data com os atributos dia, mes e ano. Além disso, a classe sobrescreve (implementa) o método especial __eq__(self, other), que é exatamente o método usado pelo Python para avaliar a operação de igualdade ==.
- Quando fazemos
d1 == d2, o Python chamad1.__eq__(d2). - Como
__eq__foi definido, a comparação==entre dois objetosDatapassa a funcionar e retornaTruequando dia, mês e ano forem iguais, eFalsecaso contrário.
Já os operadores de ordem (<, <=, >, >=) dependem de outros métodos especiais (como __lt__, __le__, __gt__, __ge__). Como eles não foram implementados no código, não é garantido que essas comparações funcionem (em geral, resulta em erro do tipo TypeError).
Alternativa correta: (b).