Conversiones automáticas de tipos de clases definidas por el usuario.

Entonces, lo que quiero hacer es crear una clase que envuelva un int y permita algunas cosas que normalmente no se permiten con los tipos int. Realmente no me importa si no es pitónico o no estoy buscando resultados. Aquí está mi código:

class tInt(int):
    def __add__(self, other):
        if type(other) == str:
            return str(self) + str(other)
        elif type(other) == int:
            return int(self) + other
        elif type(other) == float:
            return float(self) + float(other)
        else:
            return self + other
a = tInt(2)
print (a + "5")
print ("5" + a)

La salida fue.

>> 25
Traceback (most recent call last):
  File "C:\example.py", line 14, in <module>
    print ("5" + a)
TypeError: Can't convert 'tInt' object to str implicitly

Entonces, la primera declaración impresa funcionó bien y dio lo que esperaba, pero la segunda dio un error. Creo que esto se debe a que el primero está usando tIntañadir funcionó porque apareció antes de "5" y el segundo usó la cadena "5"añadir funcionar primero porque apareció primero. Sé esto pero realmente no sé cómo forzar aañadir funcionar o permitir que la clase tInt se represente como una cadena / int / etc. cuando un tipo normal aparece antes en una operación.

Respuestas a la pregunta(1)

Su respuesta a la pregunta