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

Dúvida

No terceiro exercício, não seria melhor a crianção de um Método de Objeto a um de Classe?

    def ativar_conta(self):
        self._ativo = True
4 respostas

Olá Mitsuyoshi. Tudo bem?

No exercício que você mencionou, a ideia é criar um método de classe chamado ativar_conta que define o atributo _ativo como True. A diferença entre um método de objeto e um método de classe é que o primeiro atua sobre uma instância específica da classe, enquanto o segundo pode atuar sobre a classe como um todo ou fornecer funcionalidades que não dependem de uma instância específica.

No seu caso, como o método ativar_conta está alterando o estado de uma instância específica (ativando a conta), faz sentido que ele seja um método de instância (ou objeto), como você inicialmente sugeriu. Isso porque cada conta bancária (ou instância da classe ContaBancaria) pode ser ativada individualmente, e o método precisa acessar e modificar o atributo _ativo daquela instância em particular.

Um exemplo para isso seria:

class ContaBancaria:
    def __init__(self, titular, saldo):
        self.titular = titular
        self.saldo = saldo
        self._ativo = False

    def ativar_conta(self):
        self._ativo = True

    def __str__(self):
        return f"Titular: {self.titular}, Saldo: {self.saldo}, Ativo: {self._ativo}"

Com isso, você pode criar uma instância de ContaBancaria e ativar a conta dessa instância específica:

conta = ContaBancaria("João", 1000)
print(conta)  # Antes de ativar
conta.ativar_conta()
print(conta)  # Depois de ativar

Espero ter ajudado.

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

Entendi sua explicação. Porém estou confuso em relação a quando e porque usar. Por exemplo: nesse caso é melhor usar o método de classe por qual motivo? E em que ocasião seria melhor usar o método de objeto? Obrigado

solução!

Olá, Mitsuyoshi!

Sobre sua dúvida, a diferença é bem simples:

  • Método de Instância (Objeto): É usado quando você quer modificar algo em uma instância específica da classe, ou seja, em um objeto. No caso da conta, você ativa uma conta por vez, então faz sentido usar um método de instância.

    Exemplo: ativar só a conta do "João".

    conta = ContaBancaria("João", 1000)
    conta.ativar_conta()
    
  • Método de Classe: Serve para coisas que afetam a classe inteira ou que não precisam de um objeto específico. Por exemplo, se quisesse ativar todas as contas de uma vez, poderia ser um método de classe.

    Exemplo: ativar todas as contas de uma vez (hipoteticamente):

    @classmethod
    def ativar_todas(cls):
        for conta in cls.lista_de_contas:
            conta.ativar_conta()
    

Resumindo: como você quer ativar uma conta específica, o método de instância é o mais indicado. Use o de classe quando for algo mais geral, envolvendo a classe como um todo.

Espero que tenha ficado mais claro agora! Abraço e bons estudos!

Agora sim, meu chapa kkk. Clareou tudo. Obrigado!