Объяснение того, как / почему он работает таким образом, было дано в другом месте, но не упоминается о каких-либо преимуществах для этого.
Интересное преимущество этого может иметь место, когда методы возвращают экземпляр класс. Например, многие из методов в строке возвращают экземпляр строки. Поэтому вы можете объединить несколько вызовов методов. Например:
escaped_html = text.replace('&', '&').replace('<', '<').replace('>'. '>')
Однако иногда передаваемые аргументы могут быть довольно длинными, и было бы неплохо обернуть вызовы на несколько строк. Возможно, вот так:
fooinstance \
.bar('a really long argument is passed in here') \
.baz('and another long argument is passed in here')
Конечно, для работы над ним нужна новая строка \
, что не идеально. Тем не менее, это потенциально полезная причина для этой функции. Фактически, в некоторых других языках (где все / большинство пробелов несущественны), довольно часто встречается код, отформатированный таким образом.
Для сравнения, в Python мы обычно видели это:
fooinstance = fooinstance.bar('a really long argument is passed in here')
fooinstance = fooinstance.baz('and another long argument is passed in here')
Каждый имеет свое место.