1
resposta

Construtores com valores padrão

Olá!

Acabei de ler o Para saber mais: construtores com valores padrão, e nele temos o seguinte código:

class Conta:

    def __init__(self, numero, titular, saldo, limite = 1000.0):
        self.numero = numero
        self.titular = titular
        self.saldo = saldo
        self.limite = limite

Em seguida temos que os 3 objetos estariam da seguinte maneira:

conta1 = Conta(1, "Fulano", 0.0)
conta2 = Conta(2, "Beltrano", 0.0)
conta3 = Conta(3, "Sicrano", 0.0, 2000.0)

Eis a questão: se setamos um valor padrão para o limite (1000), por que nenhuma das duas primerias contas possui limite e a última possui um limite duas vezes maior do que o que foi pré estipulado?

Desde já agradeço a atenção :)

1 resposta

Olá Giovanny, tudo bem com você?

Peço desculpas pela demora em lhe responder.

Quando temos um construtor de um objeto com valor padrão esse valor será considerado na criação do objeto quando o usuário não fornecer um valor. Seguindo o exemplo do exemplo da aula, temos o código:

class Conta:

    def __init__(self, numero, titular, saldo, limite=1000.0):
        self.numero = numero
        self.titular = titular
        self.saldo = saldo
        self.limite = limite

Vemos nesse construtor que para criarmos uma conta temos que informar o número da conta, o nome do titular, o saldo desta conta, mas informar o limite vai ser opcional já que no construtor tem definido que, quando não informado deverá considerar um limite de 1000.0. Podemos testar da seguinte maneira a criação do objeto, vamos criar uma conta sem informar o limite e tentarmos imprimir o limite:

conta1 = Conta(1, "Fulano", 0.0)
print(conta1.limite)

# Resultado

1000.0

Como visto no exemplo acima, quando não é informado um valor para o limite ele considera o valor padrão.

Usamos os valores padrões para reduzir a quantidade de informação que devemos informar quando estamos criando um objeto, no exemplo de estarmos criando uma conta em um banco, a maior parte dos usuários desse banco vão possuir um limite fixo, sabendo disso foi feito o uso de um valor padrão de 1000.0 para o limite.

Mas e se surgir um cliente especial? Temos que modificar o código?

Caso surja um cliente especial não precisamos modificar o código, basta informar que esse cliente vai ter um limite diferente do limite padrão que o valor será substituído automaticamente para ele, ficando da seguinte forma:

class Conta:

    def __init__(self, numero, titular, saldo, limite=1000.0):
        self.numero = numero
        self.titular = titular
        self.saldo = saldo
        self.limite = limite


conta2 = Conta(1, "Beltrano", 0.0, 2000.0)
print(conta2.limite)
# Resultado

2000.0

Em resumo, os valores padrões serão usados na criação de um objeto até que um novo valor seja fornecido no momento da criação de um objeto.

Caso tenha dúvidas, encontro-me à disposição.

Abraços e bons estudos.

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software