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
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.