Puxa, Eduardo,
Você fez uma implementação bem bacana e além do que foi pedido no exercício!
Você implementou bem o construtor da classe para inicializar os atributos dela já na instancialização.
Os blocos try/except foram bem empregados para garantir o tipo da informação esperada (inteiros). Considere colocar um range válido com valor máximo (como de 1 a 10) para evitar inteiros negativos ou valor máximo muito alto.
Você trouxe uma evolução no teste do OS para verificar qual função executar para a limpeza da tela, garantido portabilidade do código entre os OS. Todavia, a função nunca é executada, tornando-a desnecessária. ;o)
Isso é um requinte: numa próxima versão, considere implementar uma função para receber os inputs() que são inteiros, bastando passar as mensagens de texto como parâmetros da função, já que ambos fazem a mesma coisa.
Parabéns pelo esmero!