Wie man eine zufällige Paketrückgabe "eingibt" [duplizieren]
Ich erstelle eine API, um Plugins in einer Anwendung zuzulassen, an der ich arbeite. Ich verwende importlib.import_module
, um die Plugins zu importieren. Ich habe natürlich keine Ahnung, welche Module vorab importiert werden sollen. Gibt es eine Möglichkeit, den Rückgabetyp als generisches Modul für die Methode zu identifizieren, mit der ich die Importe durchführe?
def import_plugin(plugin_name: str) -> <Some generic module type>:
# conditional tests here...
return importlib.import_module("plugins.{}".format(plugin_name))
Antworten
Der Typ eines Moduls wird types.ModuleType
im types
Modul angegeben.
import types
type(types) is types.ModuleType
# => True
Python verwendet die Enten-Typisierung , daher empfehle ich, anzunehmen, dass es sich um ein Modul handelt, und wenn dies nicht der Fall ist, lassen Sie den Benutzer damit umgehen. Wenn Sie wirklich den Typ erhalten möchten, verwenden Sie, types.ModuleType
wie khelwood sagte.