2012-07-20 11 views
6

Digamos que tengo una clase básica en Python 3 que representa un tipo de datos similar a un número. Quiero que sea así cuando tengo una instancia, x, de esta clase, puedo llamar a int (x) y hacer que llame a mi función de conversión para devolver la parte entera.Sobrecarga int() en Python

Estoy seguro de que esto es simple, pero parece que no puedo encontrar la manera de hacerlo.

Respuesta

13

reemplaza el método mágico __int__ según el siguiente ejemplo ...

class Test: 
    def __init__(self, i): 
     self.i = i 
    def __int__(self): 
     return self.i * 2 

t = Test(5) 
print(int(t)) 
# 10 
7

Anule el método __int__().

+0

Estoy en lo cierto al suponer que esto es nuevo en Python 3? –

+2

@Joel: [No en absoluto.] (Http://docs.python.org/reference/datamodel.html#object.__complex__) –

+0

¡Aprende algo nuevo todos los días! Aunque me sorprende, pasé por alto esto al leer los documentos: P –