Python 用装饰器替换方法
Python replace method with a decorator
我有一本 Python 字典
篮子={水果:'apple',蔬菜:'kale'}
和一个辅助函数,无论它在执行查询中看到单词 fruits 和 vegetables 的什么地方,它都会分别用 apple 和 kale 替换它。
辅助函数:
def replaceQuery(self,query,**basket):
for key , value in basket.items():
if key in query:
query=query.replace(key,value)
return query
接下来,我将使用从此方法返回的查询并传递给执行方法
query =replaceQuery(query,basket)
executeQuery(Client, query)
执行方法如下:
def executeQuery(Client,query):
result=Client.query(query)
我一直在学习装饰器,想知道我是否可以在 executeQuery() 上添加一个装饰器
方法,这样每次它被调用时,它都会首先替换查询字符串以替换所有水果和蔬菜值。类似于此
@replaceQuery
def executeQuery(Client,query)
......
......
任何有关向此过程添加装饰器的帮助或建议都会有所帮助
您可以使用装饰器实现相同的功能,
如下例所示
def replaceQuery(decorated):
@wraps(decorated)
def replace(Client, query, basket):
# code to run before the decorated func
for key , value in basket.items():
if key in query:
query=query.replace(key,value)
# running the decorated func
return decorated(Client, query, basket)
return replace
@replaceQuery
def executeQuery(Client, query, basket):
......
......
在 Python 中,函数就像任何其他对象一样,
通过将 @replaceQuery 装饰器添加到 executeQuery 函数,您实际上使用 executeQuery replaceQuery(executeQuery) 调用 replaceQuery,因此装饰对象指的是 executeQuery 函数。
当运行 executeQuery() replace() 会被调用,所以你可以在运行装饰函数(executeQuery)之前添加你想要执行的功能在replace func中,然后再调用executeQuery。
我有一本 Python 字典 篮子={水果:'apple',蔬菜:'kale'}
和一个辅助函数,无论它在执行查询中看到单词 fruits 和 vegetables 的什么地方,它都会分别用 apple 和 kale 替换它。
辅助函数:
def replaceQuery(self,query,**basket):
for key , value in basket.items():
if key in query:
query=query.replace(key,value)
return query
接下来,我将使用从此方法返回的查询并传递给执行方法
query =replaceQuery(query,basket)
executeQuery(Client, query)
执行方法如下:
def executeQuery(Client,query):
result=Client.query(query)
我一直在学习装饰器,想知道我是否可以在 executeQuery() 上添加一个装饰器 方法,这样每次它被调用时,它都会首先替换查询字符串以替换所有水果和蔬菜值。类似于此
@replaceQuery
def executeQuery(Client,query)
......
......
任何有关向此过程添加装饰器的帮助或建议都会有所帮助
您可以使用装饰器实现相同的功能, 如下例所示
def replaceQuery(decorated):
@wraps(decorated)
def replace(Client, query, basket):
# code to run before the decorated func
for key , value in basket.items():
if key in query:
query=query.replace(key,value)
# running the decorated func
return decorated(Client, query, basket)
return replace
@replaceQuery
def executeQuery(Client, query, basket):
......
......
在 Python 中,函数就像任何其他对象一样, 通过将 @replaceQuery 装饰器添加到 executeQuery 函数,您实际上使用 executeQuery replaceQuery(executeQuery) 调用 replaceQuery,因此装饰对象指的是 executeQuery 函数。 当运行 executeQuery() replace() 会被调用,所以你可以在运行装饰函数(executeQuery)之前添加你想要执行的功能在replace func中,然后再调用executeQuery。