【发布时间】:2018-01-06 08:58:12
【问题描述】:
我正在使用 partial 将 myArgs 添加到我的函数调用中。但是计算 myArgs 的值需要从文件中读取它。 我想将部分装饰器转换为一个类。 我该怎么做?
class withHostAndToken(object):
def __init__(self, func):
self.HOST = ''
self.TOKEN = ''
def __call__(self, func):
if self.HOST == '':
self.HOST = cfg.getHost()
if self.TOKEN == '':
self.TOKEN == cfg.getToken()
return functools.partial( func , self.HOST, self.TOKEN)
我得到的错误是:
return functools.partial( func , self.HOST, self.TOKEN) 类型错误: 第一个参数必须是可调用的
这是这个的无类版本:
def withHostAndToken(func):
HOST = cfg.getHost()
TOKEN = cfg.getToken()
return functools.partial(func , HOST, TOKEN)
这适用于:
@withHostAndToken
def myFunction(HOST, TOKEN, other_arg):
'''do something'''
myFunction(other_arg='someValue')
【问题讨论】:
-
我开始回答这个问题,但是......不能。您能否发布有关您希望如何使用它以及如何使用
functools.partial的示例? -
func是什么,好像不是函数?还有为什么要传给__init__()和__call__() -
同意。
func这里是什么? -
因为partial期望得到一个func作为第一个参数。
标签: python