Não sei onde está errado, mas continua sacando além do limite. O que pode ser?
class Conta:
def __init__(self, numero, titular, saldo, limite=1000):
print("construindo objeto....".format(self))
self.__numero = numero
self.__titular = titular
self.__saldo = saldo
self.__limite = limite
def saldo(self):
print("O saldo é de {} do titular {}".format(self.__saldo, self.__titular))
def saca(self, valor):
if (valor <= self.__saldo + self.__limite):
self.__saldo -= valor
else:
print("o valor de {} ultrapassou o limite".format(valor))
def deposita(self, valor):
self.__saldo += valor
def transfere(self, valor, destino):
self.saca(valor)
self.deposita(valor)
Eu notei o problema da indentação no deposita() e transfere(), consertei já, mas o problema não era esse.