Для начала о том, зачем вообще нужна конструкция return self. Обычно её используют, чтобы сделать возможным так называемый chaining, то есть код вида my_object.method().another_method().do_something(). Но, как мы видим из заголовка статьи, в стандартной библиотеке Python это не используется. Точнее, используется, но не всегда. Для меня этот факт выглядит вполне естественным, хотя я никогда не думал о причинах. А вот тех, кто больше привык с другим языкам программирования, это подбешивает. И все же, почему в Python разрешено делать line = line.strip().lower(), а line.reverse().sort() нельзя? Оказалось у Гвидо есть письмо на этот счет: мутирующие методы должны возвращать None...