Seite 1 von 1

Variabler Objektnamen

Verfasst: Dienstag 4. Januar 2022, 12:44
von ax_perience
Hallo in die Runde,
entschuldigt bitte, wenn das Thema an falscher Stelle stehen sollte. Ich bin Newbie und habe folgendes Ziel: Ich möchte verschiedene PriorityQueues anlegen, deren Name flexibel sein sollte:

Hier mal ein Skript-Beispiel:

Code: Alles auswählen

id = "123"
channel = "channel"

listenobjekt = id + "." + channel
listenobjekt = queue.PriorityQueue()

listenobjekt.put("1234")
Klappt alles.
Zu einem späteren Zeitpunkt möchte ich die Liste erweitern - also gehe ich wieder wie oben vor:

Code: Alles auswählen

id = "123"
channel = "channel"

listenobjekt = id + "." + channel
listenobjekt = queue.PriorityQueue()

listenobjekt.put("1234")
Jetzt erhalte ich eine Fehlermeldung: AttributeError: 'str' object has no attribute 'put'
Es scheint, als gebe es die Liste nicht mehr. Könnt ihr mir weiterhelfen?

Danke Euch + frohes neues allen!
Äx

Re: Variabler Objektnamen

Verfasst: Dienstag 4. Januar 2022, 13:02
von __deets__
Du musst deine Queues in einem Wörterbuch (dict) verwalten. Eine “Vorbelegung” mit einem Namen erzeugt nicht magisch einen dynamischen Bezeichner.

Re: Variabler Objektnamen

Verfasst: Dienstag 4. Januar 2022, 13:19
von Sirius3
Für diesen Fall benutzt man Wörterbücher:

Code: Alles auswählen

id = "123"
channel = "channel"
queues = {}
queues[f"{id}.{channel}"] = queue.PriorityQueue()
...
queues[f"{id}.{channel}"].put("1234")

Re: Variabler Objektnamen

Verfasst: Donnerstag 6. Januar 2022, 11:47
von ax_perience
Hi Sirius3,
mega. Das löst mein Vorhaben/Problem. Tausend Dank

Grüße
Äx