1
resposta

Melhoria do metodo extrado

from datas import Data
from datetime import datetime

class Conta:

    def __init__(self, numero, titular, saldo, limite):
        self.__numero = numero
        self.__titular = titular
        self.__saldo = saldo
        self.__limite = limite

    def extrato(self):
        self.log = open('log_conta_R$ {}.txt'.format(self.__titular), mode='r')
        for lines in self.log:
            print(lines)
        self.log.close()

    def saca(self, valor):
        if valor > 0:
            self.__saldo -= valor
            self.log = open('log_conta_{}.txt'.format(self.__titular), mode='a')
            self.log.write("DEBITO R$ {} EM {}\n".format(valor, Data.data_formatada(self)))
            self.log.close()
        else:
            print("Operação não permitida")

    def deposita(self, valor):
        if valor > 0:
            self.__saldo += valor
            self.log = open('log_conta_{}.txt'.format(self.__titular), mode='a')
            self.log.write("CREDITO R$ {} EM {}\n".format(valor, Data.data_formatada(self)))
            self.log.close()
        else:
            print("Operação não permitida")


    def transfere(self, valor, destino):
        self.saca(valor)
        destino.deposita(valor)
        self.log = open('log_conta_{}.txt'.format(self.__titular), mode='a')
        self.log.write("TRANSFERENCIA R$ {} EM {} PARA {}\n".format(valor, Data.data_formatada(self), destino.__titular))
        self.log.close()

class Data:

    def data_formatada(self):
        d = datetime.now().strftime('%d/%m/%Y - %H:%M')
        return d
1 resposta

Olá Felipe, tudo bem?

Bem legal a refatoração que você fez nos métodos salvando os saques em um arquivo e buscando eles no método extrato. Uma coisa bacana também é utilizar o with para gerenciar o contexto da abertura do arquivo, por exemplo:

class Conta:

    # código omitido

    def extrato(self):
        with open('log_conta_R$ {}.txt'.format(self.__titular), mode='r') as log
            for lines in log:
                print(lines)