Python 2.7
我有自己的例外:
class NoSourceFileError(Exception):
def __init__(self, logger, massage):
Exception.__init__(self, massage)
logger.logger.info(massage)
它的调用是:
...
else:
raise NoSourceFileError('ERROR: can not find file %s for %s' % (add_file, add_name))
问题就在这里 - 我传递了两个变量(add_file
,add_name
) - 但__init__
只能接受一个var(message
)。
我如何通过他们两个?
我尝试使用*args
- 但无法使其正常工作。
Logger
- 我记录的附加课程。
答案 0 :(得分:2)
问题不在于string
,这很好。您将logger
传递给exception
。
删除logger
参数(和用法),它将起作用:
>>> class NoSourceFileError(Exception):
... def __init__(self, message):
... Exception.__init__(self, message)
...
>>> raise NoSourceFileError('ERROR: can not find file %s for %s' % ('x', 'y'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
__main__.NoSourceFileError: ERROR: can not find file x for y
>>>
我不确定logger
是什么意思。但是如果你想使用它,你需要在argument
时将它作为exception
传递给它。
在字符串格式化上,假设它正确完成,它本身就会被视为一个参数。因此不能超过1。
正如@werkritter所说,如果你确实想使用logger而不必将其作为参数传递 - 全局定义它。我将假设它是为了记录错误,在这种情况下,将它全局定义是有意义的。