Pythonコードが実行中にこのエラーが発生しています。それは循環輸入のためかもしれませんが、私は解決策を見つけることができません。私は、ファイルの名前を変更し、のinit simuladorのにfila_moduleをインポートしようとしましたが、それはうまくいきませんでしたこのエラーは何ですか? "module"オブジェクトには 'Fila'という属性はありません "
Traceback (most recent call last):
File "/Users/miff/Desktop/SCC/simulador.py", line 9, in <module>
import fila_module
File "/Users/miff/Desktop/SCC/fila_module.py", line 9, in <module>
import Eventos
File "/Users/miff/Desktop/SCC/Eventos.py", line 12, in <module>
import simulador
File "/Users/miff/Desktop/SCC/simulador.py", line 68, in <module>
s = Simulador(480)
File "/Users/miff/Desktop/SCC/simulador.py", line 32, in __init__
self.client_queue = fila_module.Fila(self,2)
AttributeError: 'module' object has no attribute 'Fila'
simulador.py
import fila_module
import lista
import Eventos
class Simulador:
def insereEvento(self,event):
self.event_list.insert_event(event)
#Construtor
def __init__(self, tempo_simulacao):
self.tempo_simulacao = tempo_simulacao
#Médias das distribuições de chegadas e de atendimento no serviço
self.media_cheg = 1
self.media_serv = 1.5
#Número de clientes que vão ser atendidos
self.n_clientes = 100
#Relógio de simulação - variável que contém o valor do tempo em cada instante
self.instant = 0 #valor inicial a zero
#Serviço - pode haver mais do que um num simulador
self.client_queue = fila_module.Fila(self,2)
self.loja_queue = fila_module.Fila(self,1)
#Lista de eventos - onde ficam registados todos os eventos que vão ocorrer na simulação
#Cada simulador só tem uma
self.event_list = lista.Lista(self)
#Agendamento da primeira chegada
#Se não for feito, o simulador não tem eventos para simular
self.insereEvento(Eventos.Chegada(self.instant, self))
#Cria um simulador e
s = Simulador(480)
#põe-o em marcha
s.executa()
fila_moduleがあります。 py
import Eventos
class Fila:
"""Classe que representa um serviço com uma fila de espera associada"""
# Construtor
def __init__(self, sim, n_atendedores):
self.fila=[] #Fila de espera do serviço
self.simulator = sim #Referência para o simulador a que pertence o serviço
self.estado = 0 #Variável que regista o estado do serviço: 0 - livre; 1 - ocupado
self.temp_last = sim.instant #Tempo que passou desde o último evento. Neste caso 0, porque a simulação ainda não começou.
self.atendidos = 0 #Número de clientes atendidos até ao momento
self.soma_temp_esp = 0
self.soma_temp_serv = 0
self.n_atendedores = n_atendedores
self.atendidos_no_momento = 0
def insereClient(self,client):
"""Método que insere cliente (client) no serviço"""
if(self.estado < n_atendedores): #Se serviço livre,
self.atendidos_no_momento += 1
if self.atendidos_no_momento == n_atendedores:
self.estado = 1 #fica ocupado e
#agenda saída do cliente c para daqui a self.simulator.media_serv instantes
self.simulator.insereEvento(Eventos.Saida(self.simulator.instant + self.simulator.media_serv,self.simulator))
else:
self.fila.append(client) #Se serviço ocupado, o cliente vai para a fila de espera
def removeClient(self):
"""Método que remove cliente do serviço"""
self.atendidos = self.atendidos+1 #Regista que acabou de atender + 1 cliente
if(self.fila==[]): #Se a fila está vazia,
self.estado = 0 # liberta o serviço
self.atendidos_no_momento -= 1
return None
else: #Se não,
#vai buscar próximo cliente à fila de espera e
cliente = self.fila.pop(0)
#agenda a sua saida para daqui a self.simulator.media_serv instantes
self.simulator.insereEvento(Eventos.Saida(self.simulator.instant + self.simulator.media_serv,self.simulator))
return cliente