Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Getters and Setters- com controle de Saldo

Boa noite, há uma boa prática quando usamos o GET e o SET como declará-los antes dos métodos ? Ou não há uma ordem ? Observei alguns codigos e uns definiram no fim do codigo e outros no começo.

Deixo meu código abaixo, fiz uma modificação para controlar o saque e a transferência, espero contribuir com os demais. Obrigado

class Conta:

    def __init__(self, numero, titular, saldo, limite):
        print("meu construtor de objeto ... {}".format(self))
        self.__numero = numero
        self.__titular = titular
        self.__saldo = saldo
        self.__limite = limite

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

    @property       #GET
    def titular(self):
        return self.__titular.title()

    @property       #GET
    def limite(self):
        return self.__limite

    @limite.setter      #SET
    def limite (self,limite):
        self.__limite = limite # para atualizar um valor

    def extrato(self):
        print("Saldo de {} do titular {}".format(self.__saldo, self.__titular))

    def deposita(self, valor):
        self.__saldo += valor

    def saca(self, valor):
        if (self.__saldo >= valor):
            self.__saldo -= valor 
        else:
            print("saldo insuficiente.")


    def transfere(self,valor,destino): 
        self.saca(valor)
        destino.deposita(valor)
1 resposta
solução!

Olá Juliano, tudo bem com você?

Peço desculpas pela demora no retorno.

Fico feliz com sua participação e contribuição para o fórum. Nas documentações da linguagem Python não temos uma ordem pré-definida para a declaração dos métodos getter e setter em relação aos demais métodos da classe. Essa ordem ficará a critério da pessoa que está programando ou por uma convenção de uma equipe de trabalho.

Uma ordem que é exigida pela linguagem Python, será sobre a declaração dos métodos getter e setter. O método getter decorado com @property deve sempre ser declarado antes do método setter que será decorado com @<nome_do_metodo>.setter, abaixo um exemplo de declaração na ordem correta.

@property
def limite(self):
    return self.__limite

@limite.setter
def limite(self, limite):
    self.__limite = limite

Caso essa ordem não seja seguida, será elevado o seguinte erro, NameError: name 'Nome_do_metodo' is not defined indicando que não foi encontrada a definição do método getter.

No mais, quando estiver ingressando em um projeto onde mais pessoas estarão atuando, recomendo que busque conhecer qual o padrão de projeto adotado pela equipe. Para projetos onde você irá atuar individualmente, você poderá definir a ordem em que serão apresentados os métodos e mantenha esse padrão até a conclusão do projeto.

Espero ter ajudado. Em caso de dúvidas estou à disposição.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!