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
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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
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?
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.