Exercício de Classes

Olá pessoal, estou com um problema num exercício, acho que todos fazem quando estão estudando python.

enfim … eu preciso simular uma conta-corrente e acho que consegui desenvolver boa parte do que se pede:
Criar Classes clientes e conta, relizar um saque e emitir extrato. Os dois primeiros eu consegui fazer, porém
mas não consigo finalizar o exercicio com a consutração do extrato, vocês podem me ajudar?

Class Conta:
def __init__(self, cliente, numero, saldo, limite):
    self.numero = str(numero)
    self.saldo = saldo
    self.cliente = cliente
    self.limite = limite

def saque(self, valor):
    if valor < (self.saldo + self.limite):
        self.saldo -= valor
        return valor
    else:
        print 'Saldo insuficiente'


class Cliente:
def __init__(self, nome, telefone):
    self.nome = nome
    self.telefone = telefone

arquivo main:

from cliente import Cliente
from conta import Conta

cliente001 = Cliente('Paulo', '981541522')
conta = Conta(cliente001, '1035-2', 5000, 1000)
saque = 0


def extrato():
print'------Extrato------'
print 'Conta: ', conta.numero+'\n'
print 'Deposito: ', conta.saldo
print 'Saque: ', saque
print 'Saldo: ', conta.saldo
print 'Limite: ', conta.limite
print 'Disponivel: ', conta.saldo+conta.limite

#-----------------
O retorno do extrato é:
------Extrato------
Conta: 1035-2

Deposito: 5000
Saque: 0
Saldo: 5000
Limite: 1000
Disponivel: 6000
------Extrato------
Conta: 1035-2

Deposito: 4950
Saque: 0
Saldo: 4950
Limite: 1000
Disponivel: 5950

Process finished with exit code 0

Não entendi o problema, mas eu faria diferente, mais ou menos assim:

Class Conta:
def __init__(self, cliente, numero, saldo, limite):
    self.numero = str(numero)
    self.saldo = saldo
    self.cliente = cliente
    self.limite = limite
    # inicia extrato
    self.extrato = []

def saque(self, valor):
    if valor < (self.saldo + self.limite):
        self.saldo -= valor
        # adiciona ao extrato
        self.extrato.append("- Saque: " + str(valor))
        return valor
    else:
        print 'Saldo insuficiente'

def deposito(self, valor):
    self.saldo += valor
    # adiciona ao extrato
    self.extrato.append("+ Deposito: " + str(valor))

def extrato(self):
    # faltou um espaço aqui, não sei se isso dá erro
    print '------Extrato------'
    print 'Conta: ', self.numero+'\n'
    for i in self.extrato:
        print i + '\n'
    print 'Saldo: ', self.saldo
    print 'Limite: ', self.limite
    print 'Disponivel: ', self.saldo+self.limite

Obrigado Diogo. Consegui, ficou assim:

class Cliente:
def __init__(self, nome, telefone):
    self.nome = nome
    self.telefone = telefone

class Conta:
def __init__(self, cliente, numero, saldo = 0):
    self.numero = str(numero)
    self.saldo = 0
    self.cliente = cliente
    self.operacoes = []
    self.deposito(saldo)



def deposito(self, valor):
    self.saldo += valor
    self.operacoes.append(["Deposito", valor])





from conta import Conta
class Limite(Conta):
def __init__(self,cliente, numero, saldo = 0, limite = 0):
    Conta.__init__(self, cliente, numero, saldo)
    self.limite = limite

def saque(self, valor=0):
    if valor <= self.limite + self.saldo:
        self.saldo -= valor
        self.operacoes.append(["Saque", valor])
    else:
        print("Saldo Insuficiente\n")

def extrato(self):

    print("CC Numero: %s" % self.numero)
    for a in self.operacoes:
        print ("%-10s %10.2f" % (a[0], a[1]))

    print("Saldo \t %12.2f" % self.saldo)
    print("Lim. Especial \t %4.2f" % self.limite)
    print("Disponivel \t %8.2f" % int(self.limite + self.saldo)+"\n")

Apenas alguns cuidados nessa linha…

Ao usar int(self.limite + self.saldo) você perderá o valor após a virgula (estamos falando de dinheiro aqui não?), melhor usar float ou até mesmo str… e o + \n não fica legal concatenando mas deixando na string principal assim…

print("Disponivel \t %8.2f\n" % float(self.limite + self.saldo))

O print no python possui as mesmas características do printf na linguagem c por exemplo, se você ja teve contato entenderá melhor seu uso…