1
resposta

Porque usar @property e x.setter não get_x e set_x?

Primeiro vimos que poderíamos acessar os atributos por meio dos métodos get e set:

 def get_saldo(self):
        return self.__saldo

Depois aprendemos que podemos usar as Propriedades com a sintaxe @property:

@property
    def saldo(self):
        return self.__saldo

Mas qual é a diferença? As propriedades devem ser usadas apenas por questão de legibilidade ou boas praticas do código?

1 resposta

Sim, se não me engano isso se trata de "Encapsulamento em POO", usando esses métodos você impede que alguém cometa algum erro enquanto acessa ou modifica essas propriedades do objeto, o deixando mais seguro.

Supondo que você possua o objeto "Casa" e tem como atributo o "casa.preco_de_venda"; você sabe que esse valor não pode ser negativo já que não existe preço de venda menor que zero, logo para evitar conflitos no programa você precisa criar uma função para impedir que esse valor seja definido como algo menor que zero, função que estará dentro do método set entendeu?

Se fosse diretamente casa.preco_de_venda = x , existiria uma abertura para por qualquer valor que eu quisesse.