Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Atributos sem inicializar no Python OO

Olá pessoal, por favor me ajudem com uma dúvida em relação a Python OO.

1 - É possível declarar as propriedades de uma classe sem ter a obrigatoriedade de inicializa-los com algum valor? 2 - É obrigatório declarar os atributos dentro de uns construtor ou pode ser fora também?

Por exemplo na Classe Conta que segue como exemplo, eu só quero setar os atributos a partir do método criar_conta() e não pelo construtor, como eu implementaria este caso?

class Conta:
    def __init__(self):
        self._agencia
        self._conta
        self._senha
        self._saldo 
        self._tipo_corrente 
        self._tipo_poupanca 

    def criar_conta(self, agencia, conta, senha):
        self._agencia = agencia
        self._conta = conta
        self._senha = senha

Digo isso, pois em outros linguagens Ex:PHP, é possível declarar os atributos sem valores iniciais e não há necessidade de envidar dados toda vez que uma classe é instanciada.

<?php
    class Conta{
        private $agencia;
                private $conta;
               private $senha;
               private $saldo;
               private $tipoCorrente;
               private $tipoPoupanca;  
    }

    function __construct(){}

    function criarConta($agencia, $conta, $senha){
        $this.agencia = $agencia;
        $this.conta = $conta;
        $this.senha = $senha;
    }

Gostaria de fazer algo parecido com isto no Python:

cc = Conta()
cc.criar_conta(123,049754,'sdf123')

Obrigado.

2 respostas
solução!

Oi Moisés, boa tarde. No Python, não conseguimos declarar uma variável, é preciso iniciar uma variável. Neste caso, você pode passar valores default para o método __init__(), assim:

def __init__(self, agencia=None, senha=None, saldo=0.0):
        self._agencia = agencia
        self._senha = senha
        self._saldo = saldo

Dessa maneira, você não é obrigado a passar esses valores toda vez que instanciar um objeto do tipo Conta.

Espero ter ajudado e bons estudos!

Muito obrigado Thais, foi esclarecedor :)

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