Olá Douglas, tudo bem?
No Python temos por convenção o uso do underscore ( _ ) antes do nome de um atributo ou método para deixá-los como privado (encapsulado). Implementado no código apresentado ficará da seguinte forma.
class Conta:
def __init__(self, numero, titular, saldo, limite):
print("Construindo objeto...{}".format(self))
self.__numero = numero
self.__titular = titular
self.__saldo = saldo
self.__limite = limite
def deposita(self,valor):
self.__saldo += valor
def saca(self,valor):
self.__saldo -= valor
def extrato(self):
print("Saldo {} do titular {}".format(self.__saldo, self.__titular))
O encapsulamento tanto de métodos, quanto de atributos no Python, é um assunto que desperta diversas opiniões, isso por não ser algo obrigatório da linguagem - embora, seja extremamente importante definir a visibilidade de métodos e atributos quando se trabalha com orientação a objetos.
Também, é importante que não será possível invocar métodos que possuam duplo underscore fora da classe (através de objetos) e isso ocorre devido ao name mangling, que se trata de uma mudança no nome do método ou atributo para dificultar a leitura direta. Mas, reforço que apesar de dificultar, seu acesso não é impossível.
Para entender mais sobre atributos, métodos privados e até mesmo sobre name mangling, recomendo a leitura dos seguintes artigos - que estão em inglês, mas ao utilizar o recurso de tradução do próprio navegador, é possível compreender:
Em caso de dúvidas, encontro-me à disposição.
Abraços e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!