Когда я впервые изучил Python, я привык к этому:
print "text", lineNumber, "some dictionary", my_dict
Когда я писал свое собственное средство ведения журнала, я, естественно, хотел иметь возможность передать ему список элементов произвольного размера, поэтому я сделал это:
def error(*args):
print ERR_PREFIX,
for _x in args:
print _x,
print "\r\n",
error("text", lineNumber, "some dictionary", my_dict)
Теперь я хочу начать использовать пакет журналирования, потому что в нем гораздо больше приятных моментов, и мне не хочется копировать их усилия. В целом это выглядит как чистый дизайн, который может многое сделать. Но я зашел в тупик из-за того, что вы больше не можете представить его с тем же списком предметов для печати. Вместо этого я должен изменить все свои звонки на что-то вроде этого:
error("text %d some dictionary %s" % (lineNumber, my_dict))
Или я мог бы сделать что-то действительно глупое, как это:
error(' '.join(map, str(("text", lineNumber, "some dictionary", my_dict))))
Вопрос в том, почему опускают такой очевидный вариант использования? Если вы хотите перейти от типичного оператора «print» прямо к новомодному средству ведения журнала, разве это не должно быть проще?
В качестве дополнительного вопроса, можете ли вы придумать способ переопределить класс Logger для выполнения этого?