A maioria das linguagens conhece o idioma 'auto-retorno' e o ignora se não for usado em uma linha. No entanto, é notável que, em Python, as funções retornem None
por padrão.
Quando eu estava na escola de informática, meu instrutor fez um grande acordo sobre a diferença entre funções, procedimentos, rotinas e métodos; muitas perguntas sobre ensaios de aperto de mãos foram feitas com lapiseiras esquentando minhas mãos sobre tudo isso.
Basta dizer que retornar self é a maneira OO definitiva de criar métodos de classe, mas o Python permite vários valores de retorno, tuplas, listas, objetos, primitivos ou Nenhum.
O encadeamento, como eles dizem, é apenas colocar a resposta da última operação na próxima, e o tempo de execução do Python pode otimizar esse tipo de coisa. A compreensão da lista é uma forma interna disso. (Muito poderoso!)
Portanto, no Python, não é tão importante que todo método ou função retorne coisas, e é por isso que o padrão é Nenhum.
Existe uma escola de pensamento de que toda ação em um programa deve relatar seu sucesso, falha ou resultado de volta ao seu contexto ou objeto de chamada, mas não estava falando aqui dos Requisitos do DOD ADA aqui. Se você precisar obter feedback de um método, vá em frente ou não, mas tente ser consistente.
Se um método pode falhar, ele deve retornar com êxito ou falha ou gerar uma exceção a ser tratada.
Uma ressalva é que, se você usar o idioma próprio de retorno, o Python permitirá que você atribua todos os seus métodos a variáveis e você pode pensar que está obtendo um resultado ou uma lista de dados quando realmente está obtendo o objeto.
Linguagens de tipo restritivo gritam e gritam e quebram quando você tenta fazer isso, mas as interpretadas (Python, Lua, Lisp) são muito mais dinâmicas.