Jak „wpisać” losowy zwrot przesyłki [duplikat]

Nov 24 2020

Buduję API, aby umożliwić wtyczki w aplikacji, nad którą pracuję. Używam importlib.import_moduledo importowania wtyczek. Oczywiście nie mam pojęcia, jakie moduły zostaną zaimportowane z wyprzedzeniem. Czy istnieje sposób identyfikacji zwracanego typu jako modułu ogólnego w metodzie, której używam do importowania?

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

Odpowiedzi

1 khelwood Nov 24 2020 at 19:52

Typ modułu jest podany types.ModuleTypew typesmodule.

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

Python używa pisania typu kaczego , więc polecam założyć, że jest to moduł i jeśli nie jest to możliwe, pozwól użytkownikowi się nim zająć. Jeśli naprawdę chcesz uzyskać ten typ, użyj types.ModuleTypetak , jak powiedział khelwood.