Acessar objeto em Python?

1. Acessar objeto em Python?

Alison Barp
UnitedK

(usa Fedora)

Enviado em 31/10/2018 - 10:06h

Pessoal, estou começando com Python e estou tendo muita dificuldade em acessar uma classe, poderiam me ajudar?

A parte em negrito... Faltam algumas coisas no geral, mas acho que isso já é o suficiente pra vcs entenderem o que eu quero.

Muito obrigado desde já!

import shelve

class Cliente():

def __init__(self, nome, cpf, nascimento, saldo = 0):
self.nome = nome
self.cpf = cpf
self.nascimento = nascimento
self.saldo = saldo

def saque(self, valor):
self.saldo =- valor

def deposito(self, valor):
self.saldo =+ valor

def menu_conta(self):
escolha = input("""

1 - Sacar
2 - Depositar
3 - Consultar saldo
4 - Consultar dados da conta

""")

def __str__(self):
return ', '.join(['{key}={value}'.format(key=key.upper(), value=self.__dict__.get(key)) for key in self.__dict__])

class Banco():

banco_de_dados = shelve.open("database.dat")
dicionario = {}

def abre_conta(self):
banco_de_dados = shelve.open("database.dat")
seu_nome = input("Nome: ")
seu_cpf = input("CPF: ")
while seu_cpf in banco_de_dados:
print("CPF já cadastrado ")
seu_cpf = input("CPF: ")
seu_nascimento = input("Data de Nascimento: ")
self.nova_conta = Cliente(seu_nome, seu_cpf, seu_nascimento)
self.dicionario['Nome'] = self.nova_conta.nome
self.dicionario['Cpf'] = self.nova_conta.cpf
self.dicionario['Nascimento'] = self.nova_conta.nascimento
self.dicionario['Saldo'] = self.nova_conta.saldo
banco_de_dados[self.nova_conta.cpf] = self.nova_conta

def acessa_conta(self, cpf):
banco_de_dados = shelve.open("database.dat")
for numero in banco_de_dados:
if cpf == banco_de_dados[cpf]:
banco_de_dados[self.cpf].menu_conta()


def menu_banco(self):
escolha = input("""

1 - Abrir uma conta
2 - Acessar uma conta existente

""")
if escolha == "1":
self.abre_conta()
elif escolha == "2":
cpfAcessa = input("Digite o CPF da conta que deseja acessar ")
self.acessa_conta(cpfAcessa)



  


2. Re: Acessar objeto em Python?

Gabriel Manoel
nocitus

(usa Arch Linux)

Enviado em 31/10/2018 - 23:20h

Primeiramente, você poderia evitar essa linha no começo de suas funções
banco_de_dados = shelve.open("database.dat") 

já que vc ja tem o recurso aberto no momento que você instancia a classe

class Banco()

banco_de_dados = shelve.open("database.dat")

apenas use
banco_de_dados = self.banco_de_dados 

e esse loop é desnecessario, você pode simplesmente

def acessa_conta(self, cpf):
banco_de_dados = self.banco_de_dados
if cpf in banco_de_dados:
banco_de_dados[cpf].menu_conta()

Eu testei o código e tudo está executando agora.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts