Porque foi declarado com um underscore:
self._programas
e não dois underscore:
self.__programas
Porque foi declarado com um underscore:
self._programas
e não dois underscore:
self.__programas
Fala Carlos.
Isso tem relação com conflito de nomes e "modificadores de acesso" em Python. Tem um post aqui que pode te ajudar. Veja:
https://cursos.alura.com.br/forum/topico-o-duplo-underline-e-realmente-para-atributos-privados-64211