14

如何实现重载的方法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
4

1 回答 1

27

在您的类上定义__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例如。

于 2012-04-05T18:44:48.470 回答