Bãaooo uai hahaha
Não é ok, porque da forma que você fez, invocando esse método mesmo que para teste, quebra o encapsulamento, é como você disse "quebrou a proteção". E em um cenário onde você vai sempre testar se as ocorrências estão corretas, recomendo que você torne esse método público, pois irá utilizá-lo fora da classe em algum momento. Se tem uma razão para você utilizá-lo fora, mesmo que em grande maioria você o utilize internamente, ele tem que ser público.
Não sei o que te retorna o método _confirmar_os_itens
, mas dependendo como está implementado, o que você pode fazer é retornar uma exception caso não esteja correta confirmação dos itens e chamar esse método dentro da inicialização da classe. Por exemplo:
class InfoGastos:
def __init__(self, tipo, valor, numero, data):
self.tipo = tipo
self.valor = valor
self.numero = numero
self.data = data
self._confirmar_os_itens()
def _confirmar_os_itens(self):
if self.tipo != 'q' or self.valor <= 0:
raise Exception('Os itens não estão corretos, há valores inadequados')
base = InfoGastos('q', 0, 1, '1/1/1')
Dessa maneira, sempre quando você criar um objeto, irá testar se os itens estão corretos e caso não esteja, o programa irá liberar uma exceção dizendo que os valores são inadequados.