How can I overload the built-in float
for my class so when I call float()
on an instance of it, my custom function gets called in
Define the __float__() special method on your class.
class MyClass(object):
def __float__(self):
return 0.0
float(MyClass()) # 0.0
Note that this method must return a float
! The calculation self.num / self.denom
, returns an int
by default in versions of Python prior to 3.0 assuming both operands are integers. In this case you'd just make sure one of the operands is a float: float(self.num) / self.denom
for example.