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

Trabalhar com classe especifica em uma lista

Olá, tenho um código onde existem 2 classes, ContaPoupanca e ContaCorrente; criei 2 objetos de cada classe, e depois fiz uma lista contendo os 4 objetos, eu gostaria de fazer um for percorrendo toda a lista, mas que só executasse um método se a conta fosse uma ContaPoupanca, já que tal método só existe na classe ContaPoupanca.

OBS: Gostaria de fazer isso sem ter que adicionar o método na classe ContaCorrente também.

class ContaCorrente(Conta):
    def saca(self, valor):
        if valor >= self.saldo:
            self.saldo -= valor

        else:
            print('saldo indisponivel')


class ContaPoupanca(Conta):
    def bonus_mensal(self):
        bonus = self.saldo * 0.01
        taxa = 3

        self.saldo += bonus - taxa


guilherme = ContaCorrente(12, 'guilherme')
ana = ContaPoupanca(5, 'ana')
rodrigo = ContaCorrente(19, 'rodrigo')
rennis = ContaPoupanca(3, 'rennis')

contas = [guilherme, ana, rodrigo, rennis]

for conta in contas:
    conta.bonus_mensal()
2 respostas
solução!

Oi Antônio,

A solução que procura é um método embutido do python: isinstance()

Faça algo do tipo:

for conta in contas:
    if isinstance(conta, ContaPoupanca):
        conta.bonus_mensal()

Esse método verifica se a objeto passado no primeiro parâmetro é uma instância do tipo de classe passado no segundo parâmetro.

Hmmm, era isso mesmoo. Muito obrigado s2