6
respostas

Classe Conta

Boa noite pessoal, ao tentar criar uma conta no "Python Console", aparece a seguinte mensagem:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

from conta import Conta Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/code.py", line 90, in runcode exec(code, self.locals) File "", line 1, in File "/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pydev/pydevbundle/pydev_import_hook.py", line 21, in do_import module = self.systemimport(name, args, *kwargs) ModuleNotFoundError: No module named 'conta'

Alguém o que poderia ser? se está faltando alguma biblioteca ou algo relacionado a isso...

6 respostas

Oi Kamylla,

Consegue mandar o código-fonte do script que você está tentando executar?

class Conta:

def __init__(self, numero, titular, saldo, limite):
    print("Construindo objeto ... {}".format(self))
    self.numero = numero
    self.titular = titular
    self.saldo = saldo
    self.limite = limite

def extrato(self):
    print("Saldo de {} do titular {}".format(self.saldo, self.titular))

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

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

O nome do arquivo em que a classe está é conta.py, com c minúsculo?

Está sim. Estou rodando outros códigos aqui e aprece erros similares a esse. Como se eu precisasse instalar alguma biblioteca.

Fiz o teste tentando rodar o mesmo script, ele só funciona quando eu inicio o Shell do Python no mesmo diretório que o arquivo da classe está, se não aparece o mesmo erro.

Problema de import pode acontecer a partir de "onde" você está chamando o módulo.

Quando você vai fazer um import no python, você chama por um módulo que este deve estar definido em algum lugar. Por exemplo: Estrutura base do projeto

o caminho que fica a classe Conta está em /home/samir/alura/conta_test/conta.py.

Quando eu chamo pelo interpretador do python ($python), eu preciso me atentar a onde eu chamei, por exemplo: Interpretadores do python

No python da esquerda, está sendo executado em /home/samir/alura, já o da direita está em /home/samir/alura/conta se eu simplesmente tentar importar com "from conta import Conta": Tentativa de import 1

Isso acontece porque ao usar "from conta", o interpretador procura por um módulo chamado "conta" e, no caso da esquerda, não tem como encontrar esse módulo. Já na direita, o módulo "conta" vai estar no mesmo lugar em que o interpretador está sendo executado.

Mas se eu realmente quiser importar a classe Conta executando de fora da pasta conta_test? Isso é algo bastante comum em projetos. Passando o caminho para o python

Essa é uma das formas que você pode chamar pela classe Conta a partir de um diretório acima. Quando você passa from conta_test.conta, o python vai entender que é para ele entrar na pasta "conta_test" e procurar pelo módulo conta, quando encontrar, importar a classe Conta. Vamos para a estrutura primeiro:

Uma outra forma é usando um init.py para indicar ao python que o diretório é um módulo (e até facilitar na digitação) Estrutura com init

E o conteúdo do init pode ser bem customizável (ou até vazio, mas você e seu time vão querer que você escreva algo), mas eu escrevi de uma forma: conteúdo do init

E, por fim: FInal import

Aqui eu fiz dois imports para você ver que posso importar o módulo como ele se chama, ou posso até apelidá-lo. Fica a seu critério.

obs: Para o python, tem total diferença ao falar sobre scripts (brutamente falando: Aqueles que você excuta diretamente com o interpretador, ex "python hello_world.py") e módulos (se quiser uma resposta completa: https://stackoverflow.com/questions/14132789/relative-imports-for-the-billionth-time/14132912#14132912).