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

Estou usando o PyCharm e me apareceu esse erro'list' object has no attribute

insira seu código aqui

class ContaCorrente:

    def __init__(self, codigo, saldo):
        self.codigo = codigo
        self.saldo = 0

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

    def __str__(self):
        return f'[Código: {self.codigo} Saldo: R$ {self.saldo:.2f}]'

    def deposita_para_todas(contas):
        for conta in contas:
            conta.deposita(100)

#criar contas
conta_do_gui = ContaCorrente(123,0)
conta_da_dani = ContaCorrente(444,0)

#depositos
conta_da_dani.deposita(130)
conta_do_gui.deposita(130)

contas = [conta_do_gui, conta_da_dani]

#chamada
contas.deposita_para_todas(contas) 
        # Traceback (most recent call last):
        # File "D:/Documentos/Python/1. Alura/5. Pytho - Coleções/IntroducaoColletions.py", line 25, in <module>
        # contas.deposita_para_todas(contas)
        # AttributeError: 'list' object has no attribute 'deposita_para_todas'
print(contas[0], contas[1])

Como faço pra resolver isso?

1 resposta
solução!

Olá,

métodos concretos em Python sempre receberão pelo menos um atributo representando o objeto atual.

    def deposita_para_todas(contas):
        for conta in contas:
            conta.deposita(100)

No código acima, vc utiliza somente um parâmetro. O correto seria:

    def deposita_para_todas(self, contas):
        for conta in contas:
            conta.deposita(100)