ffmpeg-python ドキュメントでは、例として次のデザイン パターンを使用しました。
(
ffmpeg
.input('dummy.mp4')
.filter('fps', fps=25, round='up')
.output('dummy2.mp4')
.run()
)
この設計パターンはどのように呼ばれていますか? 詳細情報はどこにありますか? また、その長所と短所は何ですか?
ffmpeg-python ドキュメントでは、例として次のデザイン パターンを使用しました。
(
ffmpeg
.input('dummy.mp4')
.filter('fps', fps=25, round='up')
.output('dummy2.mp4')
.run()
)
この設計パターンはどのように呼ばれていますか? 詳細情報はどこにありますか? また、その長所と短所は何ですか?
これは「メソッド連鎖」または「関数連鎖」と呼ばれます。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