Tuhle variantu už jste vy naimplementoval pro oba jazyky, a – světe div se – je to jak jsem psal, vychází to v obou jazycích stejně. Dovolte, abych z vašeho kódu ty dva řádky vypíchl:
No, nevychází, že

System.out.println(a.equals(b)); // true
print (a == b) # True – používá se zde přetížený operátor ==
Přesně tak. Čitelnější to být nemůže.
Java, int: ekvivalence, použije se
==. Porovnání identity, zde popravdě netuším.
Java, objekt: ekvivalence, použije se operátor/metoda
equals(). Porovnání identity, použije se operátor
==Python, int: ekvivalence, použije se operátor
==. Porovnání identity, použije se operátor
is.
Python, objekt: ekvivalence, použije se operátor
==, který se interně převede na
__eq__. Porovnání identity, použije se operátor
is.
A takhle, jak je to v Pythonu to mám rád.
Popravdě, zase si moc nefanděte. Já to píšu jen tak jako cvičení. Opravdu si nedělám naděje vám cokoliv vysvětlit
