Python, Daten nur einmal angeben?
Guten Tag,
ich frage mich schon seit längerem, wie die Bibliothek discord.py so etwas handhabt.
In discord.py muss man typischerweise nur einmal den Token an eine Funktion übergeben, um den Bot zu starten.
Nun, ich frage mich, wie discord.py es dann handhabt das der User nur einmal den Token an eine Funktion übergibt, aber mehrere unterschiedliche Module nutzen kann, ohne den Token noch einmal anzugeben?
Ich hoffe, dass man meine Frage versteht. Gerne stehe ich euch bei weiteren Fragen zur Verfügung.
Vielen Dank für eure Erklärungen. Gerne auch Code Beispiele.
Liebe Grüße
1 Antwort
Beim Starten des Bots (run-Methode) wird über den Token eine Verbindung zum Discord-Server aufgebaut. Das Verbindungsobjekt wird als Eigenschaft des Client-Objekts gespeichert (self._connection).
Wenn nun Methoden anderer Module die Verbindung benötigen, holen sie sich zuerst das Client-Objekt in-/direkt über eine Parameterübergabe und erhalten so Zugriff auf das _connection-Attribut.
Beispiele:
- MessageConverter.convert (Der Methode wird ein Context-Objekt übergeben, welches das Client-Objekt kennt; siehe Context.bot)
- Tree (Übergabe des Client an den Konstruktor)
- VoiceProtocol.cleanup (Dem Konstruktor wird der Client übergeben, dieser lässt ein eigenes Attribut client darauf referenzieren, folglich erhalten alle Instanzmethoden Zugriff darauf)
Beschäftige dich mit OOP. Einen ersten Einstieg findest du beispielsweise hier.
Hey,
vielen Dank für deine Hilfe.
Gibt es für diese Ausführung auch einen Überbegriff?
LG
Objektorientierung würde ich es nennen.
https://de.wikipedia.org/wiki/Objektorientierte_Programmierung
Danke. Weißt du zufällig, wie ich das in Python nachstellen kann? Lg