Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Oii, Marinaldo!
Seu código tá muito bem feito e mostra que você entendeu bem os conceitos de orientação a objetos em Python. A organização das classes e métodos está clara, o uso do Enum para os estados da conta deixou o sistema mais legível e as exceções personalizadas mostram uma boa preocupação com regras de negócio e tratamento de erros. Também achei uma boa escolha usar propriedades para proteger o acesso a atributos importantes como saldo e estado da conta.
O extrato formatado com a biblioteca tabulate foi um detalhe que trouxe bastante valor, porque deixa o resultado muito mais profissional e fácil de entender. E, a parte final no bloco if __name__ == "__main__": dá uma visão completa do fluxo do programa, o que é ótimo para demonstrar o funcionamento.
Continue firme nos estudos.