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.