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この場合、オペランドの1つがfloatであることを確認するだけですfloat(self.num) / self.denom。たとえば。

于 2012-04-05T18:44:48.470 に答える