Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Return self

Olá,

Por que no método abaixo, o retorno é self ao invés de self.__razao_social?

def com_razao_social(self, razao_social):
        self.__razao_social = razao_social
        return self
3 respostas

Para que seja possível encadear os métodos, se retorna uma __razao_social quando você executar obj.com_razao_social('aaa') o retorno será uma string "aaa" e o objetivo dessa atividade é criar um Builder para que você possa encadear assim:

obj.com_razao_social("aaa")
   .com_atributo1("1")
   .com_atributo2("2")

@Steimntz Machado de Figueiredo, obrigado.

Quando o self é retornado, entendi que a própria instância é retornada. A minha dúvida é por que o método "com_razao_social" retorna a instância ao invés de apenas retornar a string?

solução!

Apenas para encadear métodos, se com_razao_social retornasse String você teria que acessar os métodos da String após a chamada do método. A ideia de um Builder é deixar a leitura mais fluída assim:

Criador_de_nota_fiscal()
  .com_razao_social('FHSA Limitada xx')
  .com_cnpj('012345678901234')
  .com_itens(itens)
  .constroi

Veja que como todo campo está retornando o self eu posso encadeá-los tendo assim um código mais legível e expressivo.