17

Say I have a basic class in Python 3 which represents some number-like data-type. I want to make it so when I have an instance, x, of this class I can call int(x) and have it call my conversion function to return the integer portion.

I'm sure this is simple, but I can't seem to find out how to do it.

LordLing
  • 311
  • 1
  • 3
  • 9

2 Answers2

26

You override the __int__ magic method as per the following example...

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

t = Test(5)
print( int(t) )
# 10
Jon Clements
  • 138,671
  • 33
  • 247
  • 280
8

Override the __int__() method.

Ignacio Vazquez-Abrams
  • 776,304
  • 153
  • 1,341
  • 1,358