Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
import queue
import time
class ClassA():
def send(self, message_nums=10)
for n in range(message_nums):
time.sleep(0.2)
queue.put('message number: {}'.format(n))
class ClassB():
def receive(self):
while True:
try:
item = queue.get(timeout=1)
print(item)
except queue.Empty:
break
print('done.')
if __name__ == "__main__":
queue = queue.Queue()
classA = ClassA()
classB = ClassB()
classA.send()
classB.receive()
Bei Ausführen des Skriptes bekomme ich folgende Fehlermeldung: AttributeError: 'Queue' object has no attribute 'Empty'. Habt ihr eine Idee, was ich falsch mache?
Wenn du den Namen des Moduls mit einem Variablennamen überschattest, dann ist das das Ergebnis. Du musst deinen queue Namen ändern. Am besten indem du auf die eh schlechten globalen Variablen verzichtest, und deine Klassen auch wirklich nutzt. Und die Queue als Argument an die beteiligten Objekte im Konstruktor übergibst.
Und den Namen queue hast du immer noch global. Womit du den Modulnamen immer noch überbrätst. Das gehört in eine main-FUNKTION. Und die aus dem __main__-Guard aufgerufen.