这个 Python 设计模式怎么称呼?
How is this Python design pattern called?
在 ffmpeg-python 文档中,他们使用以下设计模式作为示例:
(
ffmpeg
.input('dummy.mp4')
.filter('fps', fps=25, round='up')
.output('dummy2.mp4')
.run()
)
这种设计模式是如何命名的,我在哪里可以找到有关它的更多信息,它的优缺点是什么?
这种设计模式称为构建器,您可以在 here
中了解它
基本上,所有命令(运行 除外)都会更改对象,并且 return 它会自行更改,这允许您在对象继续进行时“构建”该对象。
在我看来是非常有用的东西,在查询构建方面超级好,而且可以简化代码。
考虑一下您要构建的数据库查询,假设我们使用 sql
。
# lets say we implement a builder called query
class query:
def __init__():
...
def from(self, db_name):
self.db_name = db_name
return self
....
q = query()
.from("db_name") # Notice every line change something (like here change query.db_name to "db_name"
.fields("username")
.where(id=2)
.execute() # this line will run the query on the server and return the output
这称为'method chaining'或'function chaining'。您可以将方法调用链接在一起,因为每个方法调用 returns 底层对象本身(在 Python 中表示为 self
,在其他语言中表示为 this
)。
这是四人组 builder design pattern 中使用的一种技术,您可以在其中构造一个初始对象,然后链接其他 属性 个设置器,例如: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
在 ffmpeg-python 文档中,他们使用以下设计模式作为示例:
(
ffmpeg
.input('dummy.mp4')
.filter('fps', fps=25, round='up')
.output('dummy2.mp4')
.run()
)
这种设计模式是如何命名的,我在哪里可以找到有关它的更多信息,它的优缺点是什么?
这种设计模式称为构建器,您可以在 here
中了解它基本上,所有命令(运行 除外)都会更改对象,并且 return 它会自行更改,这允许您在对象继续进行时“构建”该对象。
在我看来是非常有用的东西,在查询构建方面超级好,而且可以简化代码。
考虑一下您要构建的数据库查询,假设我们使用 sql
。
# lets say we implement a builder called query
class query:
def __init__():
...
def from(self, db_name):
self.db_name = db_name
return self
....
q = query()
.from("db_name") # Notice every line change something (like here change query.db_name to "db_name"
.fields("username")
.where(id=2)
.execute() # this line will run the query on the server and return the output
这称为'method chaining'或'function chaining'。您可以将方法调用链接在一起,因为每个方法调用 returns 底层对象本身(在 Python 中表示为 self
,在其他语言中表示为 this
)。
这是四人组 builder design pattern 中使用的一种技术,您可以在其中构造一个初始对象,然后链接其他 属性 个设置器,例如: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