1

代数構造である Python クラスが実装する必要があるインターフェイスの標準は既にありますか? コードをより汎用的にしたい。

たとえば、数値と正方行列はどちらも乗算と 1 を含む半群です。.one()の恒等要素を返すメソッドを実装する場合*、両方のクラスのオブジェクトに対して動作する 2 乗によってべき乗を実装できます。

def exp_by_squaring(x, n):
    result = x.one() # <--
    while n > 0:
        if n % 2 == 1:
            result *= x
        x = x * x
        n = n // 2
    return result

また、関数は、数値であるかどうかに関係なく、乗算と 1 を持つ半群 (クラスがそのようなインターフェイスを実装している場合) である任意のクラスのオブジェクトで正常に機能する可能性があります。

その目的のために独自のインターフェースを導入できることはわかっていますが(例で行ったように)、既存のソリューションに固執したいと思います(可能であれば)。

4

0 に答える 0