Я выпустил библиотеку Python, которая называется Autoload_module Анкет Это будет удобнее для вашего программирования Python.
Что такое библиотека?
Эта библиотека разрешено автоматически импортировать модули и получить объекты класса. Пример ниже.
- Каталог
project/ ├ example.py └ validator/ ├ validator_a.py ├ validator_b.py └ validator_c.py
- validator_a.py
class ValidatorA: # b and c are same. def valildate(self, input): # process of validation
- example.py
from autoload.module_loader import ModuleLoader input = "foo bar baz" loader = ModuleLoader() # Automatically import modules and return class objects validator_classes = loader.load_classes("validator") try: # initialize and execute method [clazz().validate(input) for clazz in validator_classes] except: print("input is invalid!!")
Вы также можете получить функциональные объекты.
# This is the example you defined not classes but functions like 'validate_A', 'validate_B' and 'validate_C' validate_functions = loader.load_functions("validator") [func(input) for func in validate_functions]
Что полезно?
Будет полезно сделать что -то оптом. Ниже приведено в качестве примера использования конкретного использования.
- Проверка
- трубопровод
Пример трубопровода ниже.
- Каталог
project/ ├ example.py └ pipelineA/ ├ get_data_a.py └ processing_data_a.py └ pipelineB/ ├ get_data_b.py └ processing_data_b.py
- example.py
from autoload.module_loader import ModuleLoader package_names = ("pipelineA", "pipelineB") loader = ModuleLoader() # You should use library like `concurrent.futures` for package_name in package_names: GetData, ProcessingData = loader.load_classes(package_name) data = GetData().get() processed_data = ProcessingData().process(data)
Горячий в использовании
Пожалуйста, прочитайте это Анкет
Вывод
Эта библиотека Дайте автоматически импортировать модули. Я приветствую ваш вклад!
Оригинал: “https://dev.to/nuko_suke/convenient-python-library-for-importing-modules-4in”