如何重载自定义类的`Float()`?
问题描述
如何实现重载float()
的方法,即当我编写的类的实例传递给float()
时会调用该方法?
我开始编写自己的Fraction
类:
class Fraction:
def __init__(self, num = 0, denom = 1):
self.num = float(num)
self.denom = float(denom)
现在我希望能够执行此操作:
float(Fraction())
我尝试使用以下方法,但不起作用。
def float(self):
return self.num / self.denom
解决方案
在您的类上定义__float__()
特殊方法。
class MyClass(object):
def __float__(self):
return 0.0
float(MyClass()) # 0.0
请注意,此方法必须返回float
!假设两个操作数都是整数,则在3.0之前的Python版本中,计算self.num / self.denom
默认情况下返回int
。在本例中,您只需确保其中一个操作数是浮点型:例如float(self.num) / self.denom
。
相关文章