Token nur einmal angeben?
Guten Tag,
ich schreibe gerade an einer eigenen Bibliothek für den privaten Gebrauch in Python. Für eine API Abfrage benötigt man jedoch den API Token. Ich möchte wissen, wie ich einmal den API Token an einer Klasse übergeben kann und der Token dann auf andere Klassen / Dateien angewendet werden kann, ohne ihn mehrfach anzugeben.
Ein Beispiel:
TestBot = bot.startmenu(token="…")
mit der Variable TestBot soll man nun auf alle Eigenschaften zugreifen können (auch von anderen Datei / Modulen).
Vielen Dank für die Hilfe
Liebe Grüße
2 Antworten
a) Du kannst ein extra Modul für Konstanten anlegen.
settings.py:
TOKEN = "..."
some_script.py:
import settings
TestBot = bot.startmenu(token=settings.TOKEN)
Wenn der Token dynamisch ermittelt wird, könntest du die settings.py etwas umschreiben:
def initialize(token):
global TOKEN
TOKEN = token
und die Definition zu Programmstart durchführen.
import settings
token = # get token ...
settings.initialize(token)
b) Die Methoden, die den Token benötigen, lassen sich sicherlich ebenso in einer Klasse bündeln. Zu Programmstart erstellst du eine Instanz dieser Klasse und teilst diese (wie oben) global.
some_handler.py:
class SomeHandler:
def __init__(self):
self.token = # get token ...
def do_something_with_token():
# ...
def do_something_else_with_token():
# ...
HANDLER = SomeHandler()
some_script.py:
from some_handler import HANDLER
HANDLER.do_something_with_token()
HANDLER.do_something_else_with_token()
import os
from dotenv import load_dotenv
load_dotenv()
BOT_TOKEN = os.getenv('BOT_TOKEN')
TestBot = bot.startmenu(token=BOT_TOKEN)
Und dann in der .env Datei:
BOT_TOKEN="..."
Tut mir leid, das meine ich nicht. Ich möchte den Token unabhängig von dem Modulen übergeben, aber das man es nur an einem bestimmten Modul senden muss. Quasi das du den Token nicht doppelt und dreifach an jedes neue Modul übergeben musst.