1
resposta

Problema com o From Import.

Bom dia Galera ! tudo bem ?

Eu tentei já pela quarta vez realizar o exercćio da criação de bancos. O meu problema está sendo com o from import, onde toda vez que eu dou o comando no terminal, sempre é referênciado o erro vindo do from import. Sendo que é o mesmo aplicado nas aulas. Abaixo eu vou deixar os códigos e também um print dos arquivos usado. Se alguém souber de uma solução e puder me explicar, ficarei agradecido.
Obs; O meu S.o é o Linux Mint (Base obunto).

Mensagem de erro:
Traceback (most recent call last):
File "###", line 1, in
from Agencia import Agencia
File "/home/###/Área de trabalho/OO_Banco/Agencia.py", line 1, in
from Banco import Banco
ImportError: cannot import name 'Banco' from 'Banco' (/home/###/Área de trabalho/OO_Banco/Banco.py)

Script feito :

class Banco:

def __init__(self,nome,endereco):
    self.nome = nome
    self.endereco = endereco
    

from Banco import Banco

class Agencia(Banco):

def __init__(self,nome,endereco,numero):
    super().__init__(nome,endereco)
    self.numero = numero
    

from Agencia import Agencia
from Banco import Banco

agencia = Agencia('agencia1','R.das Grimórias',33)
banco = Banco('banco1','Av. xpto')

print(agencia)
print(banco)

As Pastas :

1 resposta

Olá, Pedro! Tudo bem?

O problema está relacionado à importação circular entre os arquivos Agencia.py e Banco.py. Isso ocorre quando dois ou mais módulos tentam importar um ao outro, criando um ciclo que o Python não consegue resolver.

Para resolver isso, você pode reestruturar o código para evitar a importação circular. Aqui está uma sugestão:

  1. Banco.py: Mantenha como está, sem importar Agencia.

    class Banco:
        def __init__(self, nome, endereco):
            self.nome = nome
            self.endereco = endereco
    
  2. Agencia.py: Importar Banco de forma condicional ou apenas usar o nome da classe sem importar.

    from Banco import Banco
    
    class Agencia(Banco):
        def __init__(self, nome, endereco, numero):
            super().__init__(nome, endereco)
            self.numero = numero
    
  3. app.py: Realize as importações e instancie as classes.

    from Agencia import Agencia
    from Banco import Banco
    
    agencia = Agencia('agencia1', 'R.das Grimórias', 33)
    banco = Banco('banco1', 'Av. xpto')
    
    print(agencia)
    print(banco)
    

Certifique-se de que os arquivos Banco.py, Agencia.py e app.py estão todos no mesmo diretório e que você está executando o app.py a partir desse diretório.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.