Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não reconhecimento da variável

Estou com 2 problemas. Vou deixar as linhas de código aqui antes das dúvidas:

class ContaCorrente:

def __init__(self, numero, titular, saldo, limite):
#def __init__(self, numero, titular, saldo, limite = 1000.0): Para quando definir um atributo padrão
    print("Criando sua conta...{}".format(self))
    self.__numero = numero
    self.__titular = titular
    self.__saldo = saldo
    self.__limite = limite
    #self."__"numero = numero encapsula o atributo

def extrato(self):
    print("O saldo do titular {} é de {}.".format(self.__titular, self.__saldo))

def deposito(self, valor):
    self.__saldo += valor
    print("Seu novo saldo é de {}, {}.".format(self.__saldo, self.__titular))

def saque(self, valor):
    self.__saldo -= valor
    print("Seu novo saldo é de {}, {}".format(self.__saldo, self.__titular))

def transfere(self, valor, destino):
    self.saque(valor)
    destino.deposito(valor)

def get_saldo(self):
    return self.__saldo

def get_titular(self):
    return self.__titular

def get_limite(self):
    return self.__limite

def set_limite(self, limite):
    self.__limite = limite

from conta import ContaCorrente as CC

conta1 = CC(1, "Mauricio", 10.00, 200.00)
conta2 = CC(2, "Mayara", 1000.00, 5000.00)

c_s = conta1.get_saldo
c_l = conta1.set_limite(500.00)
print(c_s,)
print(c_l)
print(conta1.get_limite())
print(conta1.get_titular())

print ("Limite", conta1._ContaCorrente__limite)

conta1.deposito(50)
print("Retornando saldo após deposito", conta1.get_saldo())

print(type(conta1.set_limite(5000.00)))

1 - Quando eu tento retornar os valores do saldo ele só retorna se eu tiver feito um novo depósito ou saque:

2 - A variável com limite não está sendo acessada como um float.

Essa é a resposta que recebo:

Criando sua conta...<conta.ContaCorrente object at 0x000001FBBABB1600>

Criando sua conta...<conta.ContaCorrente object at 0x000001FBBAA47B80>

<bound method ContaCorrente.get_saldo of <conta.ContaCorrente object at 0x000001FBBABB1600>>

None

500.0

Mauricio

Limite 500.0

Seu novo saldo é de 60.0, Mauricio.

Retornando saldo após deposito 60.0

<class 'NoneType'>

1 resposta
solução!

Para retornar o saldo você tem que colocar os parênteses na frente do nome da função, senão ele não executa a função, simplesmente só coloca na variável o endereço de memória onde aquele objeto (função) está:

c_s = conta1.get_saldo  # ERRADO
c_s = conta1.get_saldo()  # CERTO

Em geral, seu código comentado:

c_s = conta1.get_saldo  # coloca o endereço do objeto, como mencionado anterior
c_l = conta1.set_limite(500.00)  # A função set_limite() não retorna nenhum valor, então coloca 500 na variável __limite e coloca None no valor da variável c_l
print(c_s,) #imprime o endereço do objeto
print(c_l)  #imprime None
print(conta1.get_limite()) #imprime o valor da variável __limite
print(conta1.get_titular()) #imprime o valor da variável __titular

print ("Limite", conta1._ContaCorrente__limite)  #jeito feio de pegar o valor da variável __limite, basta usar conta1.get_limite()

conta1.deposito(50)  #deposita 50 na conta1
print("Retornando saldo após deposito", conta1.get_saldo())  #pega o novo saldo (10 do início + 50 do depósito = 60)

print(type(conta1.set_limite(5000.00)))  #imprime o "Tipo" de dado do método set_limite(), que como é uma função, não tem tipo, logo NoneType