1

ffmpeg-python ドキュメントでは、例として次のデザイン パターンを使用しました。

(
    ffmpeg
    .input('dummy.mp4')
    .filter('fps', fps=25, round='up')
    .output('dummy2.mp4')
    .run()
)

この設計パターンはどのように呼ばれていますか? 詳細情報はどこにありますか? また、その長所と短所は何ですか?

4

2 に答える 2

1

これは「メソッド連鎖」または「関数連鎖」と呼ばれます。self各メソッド呼び出しは基になるオブジェクト自体を返すため ( Python またはthis他の言語ではで表されます)、メソッド呼び出しを連鎖させることができます。

これは、Gang of Fourビルダー デザイン パターンで使用される手法であり、最初のオブジェクトを作成してから、追加のプロパティ セッターをチェーンします (例: car().withColor('red').withDoors(2).withSunroof().

次に例を示します。

class Arithmetic:
    def __init__(self):
        self.value = 0

    def total(self, *args):
        self.value = sum(args)
        return self

    def double(self):
        self.value *= 2
        return self

    def add(self, x):
        self.value += x
        return self

    def subtract(self, x):
        self.value -= x
        return self

    def __str__(self):
        return f"{self.value}"


a = Arithmetic().total(1, 2, 3)
print(a)  # 6

a = Arithmetic().total(1, 2, 3).double()
print(a)  # 12

a = Arithmetic().total(1, 2, 3).double().subtract(3)
print(a)  # 9
于 2021-03-12T14:59:39.030 に答える