2
respostas

[Dúvida] esta dando erro

oi Professor

fiz e refiz o programa do arquivo fila_prioritaria (inclusive copiei o seu que vc colocou na questão do forum anterior e deu sempre o mesmo erro:

Traceback (most recent call last):
  File "C:\Users\alexa.DESKTOP-DPSAL6T\PycharmProjects\pythonPEP8\main.py", line 5, in <module>
    fila_teste2.atualiza_fila()
TypeError: atualiza_fila() missing 1 required positional argument: 'self'

segue todos os programas:

codigo:

class filanormal:
    int = 0
    fila =[]
    clientesatendidos = []
    senhaatual:str = ""

    def gerasenhaatual(self) -> None:
        self.senhaatual = f'NM {self.codigo}'

    def resetasenha(self) -> None:
        if self.codigo >= 100:
            self.codigo = 0
        else:
            self.codigo += 1

    def atualizafila(self)->None:
        self.resetasenha()
        self.gerasenhaatual()
        self.fila.append(self.senhaatual)

    def chamacliente(self, caixa:int) -> str:
        clienteatual:str = self.fila.pop(0)
        self.clientesatendidos.append(clienteatual)
        return f'Cliente atual: {clienteatual} dirija ao caixa {caixa}

o da prioridade:

class FilaPrioritaria:
    codigo:int = 0
    fila = []
    clientes_atendidos = []
    senha_atual:str = ""

    def gera_senha_atual(self) -> None:
        self.senha_atual = f'PR {self.codigo}'

    def reseta_senha(self) -> None:
        if self.codigo >= 100:
            self.codigo = 0
        else:
            self.codigo += 1

    def atualiza_fila(self) -> None:
        self.reseta_senha()
        self.gera_senha_atual()
        self.fila.append(self.senha_atual)

    def chama_cliente(self, caixa:int) -> str:
        cliente_atual:str = self.fila.pop(0)
        self.clientes_atendidos.append(cliente_atual)
        return f'Cliente atual: {cliente_atual} dirija ao caixa {caixa}'

    def estatistica(self, dia: str, agencia:int, flag:str)->dict:
        if flag != "detail":
            estatistica = {f'{agencia} - {dia}: {len(self.clientes_atendidos)}'}
        else:
            estatistica ={}
            estatistica['dia'] = dia
            estatistica['agencia'] = agencia
            estatistica['clientes atendidos'] = self.clientes_atendidos
            estatistica['quantidade de clientes atendidos'] = len(self.clientes_atendidos)
        return estatistica

e do main.py

#from fila_normal import filanormal
from fila_prioritaria import FilaPrioritaria

fila_teste2 = FilaPrioritaria
fila_teste2.atualiza_fila()
# fila_teste2.atualiza_file()

# fila_teste = filanormal()
# fila_teste.atualizafila()
# fila_teste.atualizafila()
# print(fila_teste.chamacliente(5))
# print(fila_teste.chamacliente(10))
2 respostas

Olá Alexandre, tudo bem com você?

O erro de tipo (TypeError) que está sendo apresentado, está ocorrendo devido à atribuição da classe FilaPrioritaria a variável fila_teste2 e não a instanciação (criação) de um objeto da classe FilaPrioritaria. Quando queremos criar um objeto de uma classe devemos fazer o uso dos parênteses () após no nome da classe. Como apresentado abaixo:

objeto_da_classe = NomeDaClasse()

Peço que no arquivo main.py localize a criação do objeto fila_teste2 da classe FilaPrioritaria, e adicione os parênteses após o nome da classe. Deixando como apresentado abaixo:

fila_teste2 = FilaPrioritaria()

Após a mudança, salve o arquivo main.py e execute-o. Feitas as mudanças, basta dar prosseguimento nas aulas.

Espero ter lhe ajudado. Em caso de dúvidas estou à disposição.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

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

Obrigado professor. Foi solucionado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software