4
respostas

[Dúvida] erro no import

ta dando erro na primeira linha no caso e o import, em relacao a o app esta fora da pasta ja foi feito e tb a parte dos codigos dos outros arquivo tb ja ta tudo certo

from DeliveryCo.Avaliacao import Avaliacao

class Restaurante:
    restaurantes = []

    def __init__(self, nome, categoria):
        self.nome = nome.title()
        self.categoria = categoria.upper()
        self._ativo = False
        self._avaliacao = []
        Restaurante.restaurantes.append(self)

    def __str__(self):
        return f"{self.nome} | {self.categoria}"
    
    @classmethod
    def listar_restaurantes(cls):
        print (f"{"nome do restaurante".ljust(31)} | {"categoria".ljust(36)} | {"Avaliacao".ljust(31)} | {"status:"}")
        for restaurante in cls.restaurantes:
            print (f"{restaurante.nome.ljust(25)} | {restaurante.categoria.ljust(25)} | {restaurante._ativo.ljust(25)} | {restaurante.media.ljust(25)})


    @property
    def ativo(self):
        return "Verdadeiro" if self._ativo else "Falso"
    
    def alternar_ativo(self):
        self._ativo = not self._ativo

    def receber_avaliacao(self, cliente, nota):
        avaliacao = Avaliacao(cliente, nota)
        self._avaliacao.append(avaliacao)

    @property
    def media_avaliacao(self):
        if not self._avaliacao:
            return 0
        soma_das_notas = sum(avaliacao._nota for avaliacao in self._avaliacao)
        quantidade_nota = len(self._avaliacao)
        media = round(soma_das_notas / quantidade_nota, 1)
        return media
4 respostas

Olá Vinicius! Como vai?

Antes de tudo tenha certeza que o caminho para o módulo Avaliacao está correto. O erro pode ocorrer se o Python não conseguir encontrar o módulo no caminho especificado. Verifique se a estrutura de pastas está correta e se o módulo Avaliacao.py está dentro da pasta DeliveryCo.

  1. Verifique o Nome do Módulo e Classe: Certifique-se de que os nomes estão corretos e que não há erros de digitação. O Python é sensível a maiúsculas e minúsculas, então "Avaliacao" e "avaliacao" seriam considerados diferentes.

  2. Verifique o Arquivo __init__.py: Se a pasta DeliveryCo está sendo tratada como um pacote, certifique-se de que ela contém um arquivo __init__.py. Este arquivo pode estar vazio, mas sua presença é necessária para que o Python reconheça a pasta como um pacote.

  3. Estrutura de Diretórios: Se você estiver usando um ambiente de desenvolvimento integrado (IDE) ou um editor de texto, verifique se ele está configurado corretamente para reconhecer a estrutura do projeto.

Aqui está um exemplo de como a estrutura de diretórios deve estar:

seu_projeto/
│
├── DeliveryCo/
│   ├── __init__.py
│   └── Avaliacao.py
│
└── seu_script.py

Se tudo estiver correto e o problema ainda persistir, pode ser útil compartilhar a mensagem de erro específica que você está recebendo e a organização de pastas e arquivos do projeto.

Espero ter ajudado e bons estudos!

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

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

troquei o nome do modulo e ainda nao deu certo quando eu tiro o nome da pasta e deixo so o arquivo ele nao da nenhuma resposta e auto encerra eu nao entendi muito esse init coloquei tb e nao deu certo

esse e do restaurante.py

from AVAliacao import Avaliacao
class Restaurante:
    restaurantes = []
    def __init__(self, nome, categoria):
        self.nome = nome.title()
        self.categoria = categoria.upper()
        self._ativo = False
        self._avaliacao = []
        Restaurante.restaurantes.append(self)

    def __str__(self):
        return f"{self.nome} | {self.categoria}"
    
    @classmethod
    def listar_restaurantes(cls):
        print (f"{"nome do restaurante".ljust(31)} | {"categoria".ljust(36)} | {"Avaliacao".ljust(31)} | {"status"}")
        for restaurante in cls.restaurantes:
            print (f"{restaurante.nome.ljust(25)} | {restaurante.categoria.ljust(25)} | {restaurante._ativo.ljust(25)} | {restaurante.media_avaliacao.ljust(25)}")

    @property
    def ativo(self):
        return "Verdadeiro" if self._ativo else "Falso"
    
    def alternar_ativo(self):
        self._ativo = not self._ativo

    def receber_avaliacao(self, cliente, nota):
        avaliacao = Avaliacao(cliente, nota)
        self._avaliacao.append(avaliacao)

    @property
    def media_avaliacao(self):
        if not self._avaliacao:
            return 0
        soma_das_notas = sum(avaliacao._nota for avaliacao in self._avaliacao)
        quantidade_nota = len(self._avaliacao)
        media = round(soma_das_notas / quantidade_nota,1)
        return media

esse e do AVAliacao.py

class Avaliacao:
    def __init__(self, cliente, nota):
        self._cliente = cliente
        self._nota = nota
```![Insira aqui a descrição dessa imagem para ajudar na acessibilidade](https://cdn1.gnarususercontent.com.br/1/8755137/6fde80ab-00aa-4216-9cfb-c46a66389235.png)  

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

Bom dia, Vinicius! Tudo bem?

Peço perdão pela demora em responder.

Com base no print que você enviou, identifiquei o problema e ele está na importação da sua classe Avaliacao no arquivo restaurante.py.

Na importação, a primeira parte dela é relacionada ao nome do arquivo que vem à classe e, como nessa parte você colocou que o nome do arquivo AVAliacao e não avaliacao acabou causando esse erro de identificação de arquivo.

A solução é usar o nome exatamente como está no arquivo:

from avaliacao import Avaliacao

Peço desculpas novamente pela demora e bons estudos!