No lo creo, pero pensé que podría preguntar por las dudas. Por ejemplo, para su uso en una clase que encapsula un int:¿python tiene operadores de conversión?
i = IntContainer(3)
i + 5
Y no soy sólo interesado en este ejemplo int, que estaba buscando algo limpio y en general, no anulando todos los int y método de cadena.
Gracias, sunqiang. Eso es justo lo que quería. No me di cuenta de que podías subclasificar estos tipos inmutables (procedentes de C++).
class IntContainer(int):
def __init__(self,i):
#do stuff here
self.f = 4
def MultiplyBy4(self):
#some member function
self *= self.f
return self
print 3+IntContainer(3).MultiplyBy4()
No realmente. Estaba buscando algo así como el operador de conversión C++, que inteligentemente reemplaza el objeto contenedor con todo lo que contiene en expresiones. – Alex
Esto no funcionará para "5 + i", creo. – ars
ars, tienes razón, vi tu respuesta y me falta __radd__ ... creo que ahora está bien después de haber cambiado mi respuesta ... –