2
respostas

Exercício Python OO - Definindo uma Classe

No exercício a resposta certa é apontada como sendo a única incorreta a questão 3, que afirma que uma referência precisa ter todos os valores de seus atributos preenchidos, ao testar a afirmação deixando de preencher um único valor de atributo minha IDE PyCharm apontou um erro, justamente em relação a falta dessa atribuição. Estou pecando em alguma observação? Alguém poderia me dar um norteamento apenas para não deixar esse detalhe passar?

class Conta:
    def __init__(self, numero, titular, saldo, limite):
        print('Construindo objeto... {}'.format(self))
        self.numero = numero
        self.titular = titular
        self.saldo = saldo
        self.limite = limite

if __name__ == '__main__':
    conta = Conta(123, 'Carlos', 500)



Traceback (most recent call last):
  File "C:/Users/Gerson/PycharmProjects/pythonbirds/oo/conta.py", line 10, in <module>
    conta = Conta(123, 'Carlos', 500)
TypeError: __init__() missing 1 required positional argument: 'limite'

Process finished with exit code 1
2 respostas

Olá Igor,

O motivo da opção 3 ser considerada incorreta é porque nem sempre vai ser obrigatório passar todos os atributos, um exemplo disso é a definição de parâmetros com um valor padrão:

# Esse código executa sem erros
class Conta:
    def __init__(self, numero, titular, saldo = 0, limite = 0):
        print('Construindo objeto... {}'.format(self))
        self.numero = numero
        self.titular = titular
        self.saldo = saldo
        self.limite = limite

if __name__ == '__main__':
    conta = Conta(123, 'Carlos')
    conta2 = Conta(124, 'José', 500)

Obrigado Lucas, consegui entender agora, deixei esse ponto passar na hora da análise. Valeu!