Encapsulamento básico
Em sistemas bancários reais, o saldo de uma conta não pode ser alterado diretamente — todo depósito ou saque precisa passar por regras de validação. Usar o underscore (_saldo) é a convenção do Python para indicar que um atributo é interno e não deve ser tocado de fora da classe. Dominar isso evita que seu código vire uma bagunça quando outros programadores (ou você no futuro) usarem sua classe.
O PROBLEMA
ContaBancaria com _saldo privado, depositar() e get_saldo().
EXEMPLO
ContaBancaria(1000).depositar(500).get_saldo() → 1500
SOBRE O CONCEITO
Encapsulamento com underscore (_) é uma convenção, não uma trava de segurança. Quando você escreve self._saldo = 0 dentro do __init__, está avisando: "isso é detalhe interno, use os métodos da classe para mexer aqui". O erro comum é fazer conta._saldo = 9999 — isso quebra o encapsulamento porque permite definir um valor sem passar por depositar(), que poderia conectar a regras (ex.: não aceitar depósito negativo). O método get_saldo() e depositar() são a porta de entrada oficial: o primeiro só lê, o segundo valida e altera. Assim, você mantém o controle sobre o estado do objeto.
RESOLUÇÃO