Полагаю, вы знакомы с синтаксисом *args
в аргументе.Это просто произвольный список неназванных аргументов.Тогда у вас есть
self, *args = args # allow the "self" keyword be passed
Этот комментарий довольно явный.Вы разбиваете args
, который является списком, на первый элемент (который мы обычно называем self
, но это просто обычный аргумент, всегда первый в методе объекта), и остальные.Таким образом, мы читаем self
, и все хорошо - не сразу, а в функции.
Единственный вариант использования, который я могу увидеть здесь, это
if not args:
raise TypeError("descriptor 'format' of 'Formatter' object "
"needs an argument")
Это означает, что мыожидая выполнения таких вещей, как
Formatter.format(formatterObj,format_string,...)
(не уверен, почему, что-то вроде фабрики?), поэтому в случае, если мы забудем отправить self
- formatterObj
в моем примере, мы получиммногословная ошибка.Возможно поддерживать Formatter
подобные объекты, у которых нет метода format
, но есть метод vformat
.Кажется довольно маловероятным, хотя.