Comment «taper» un retour aléatoire de colis [dupliquer]

Nov 24 2020

Je construis une API pour permettre des plugins dans une application sur laquelle je travaille. J'utilise importlib.import_modulepour importer les plugins. De toute évidence, je n'ai aucune idée des modules qui seront importés à l'avance. Existe-t-il un moyen d'identifier le type de retour en tant que module générique sur la méthode que j'utilise pour effectuer les importations?

def import_plugin(plugin_name: str) -> <Some generic module type>:
    # conditional tests here...
    return importlib.import_module("plugins.{}".format(plugin_name))

Réponses

1 khelwood Nov 24 2020 at 19:52

Le type d'un module est donné par types.ModuleTypedans le typesmodule.

import types
type(types) is types.ModuleType
# => True
ericl16384 Nov 24 2020 at 19:45

Python utilise le typage canard , donc je recommande de supposer qu'il s'agit d'un module, et s'il ne l'est pas, laissez l'utilisateur le gérer. Si vous voulez vraiment obtenir le type, utilisez types.ModuleTypecomme l'a dit khelwood.