Конвертировать строку как модуль - PullRequest
0 голосов
/ 25 января 2019

есть ли способ превратить строку в объект модуля? я хочу сделать вызов функции после выполнения запроса API, но я не могу преобразовать полученную из запроса строку в объект модуля

Я видел некоторый код, который мог бы на самом деле сделать это, однако это делается путем импорта модуля.

        import controller.mipay.controller as mipay

        @api.route('/redirect')
        class Request(Resource):
            parser = RequestChecker()
            def post(self):
                req = self.parser.parse_args() # <---- JSON/Dictionary

                #method_to_call = getattr(mipay, req['PaymentEndpoint'])
                method_to_call = getattr(req['PaymentMethod'], req['PaymentEndpoint'])

                return method_to_call()

есть ли в любом случае преобразовать строку в объект модуля или все, что я могу сделать со строкой, чтобы я мог вызвать свою функцию

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Я предполагаю, что req ['PaymentMethod'] - это модуль, а req ['PaymentEndpoint'] - это метод.Что вы можете сделать, это использовать importlib.

#import controller.mipay.controller as mipay
import importlib

my_mapping = {'mipay':'controller.mipay.controller'}

class Request(Resource):
    parser = RequestChecker()

    def post(self):
        req = self.parser.parse_args()  # <---- JSON/Dictionary

        # method_to_call = getattr(mipay, req['PaymentEndpoint'])
        mipay= importlib.import_module(my_mapping[req['PaymentMethod']])
        method_to_call = getattr(mymodule, req['PaymentEndpoint'])

        return method_to_call()
0 голосов
/ 25 января 2019

__import__ может быть ваш ответ:

module = __import__("module.path")

См .: https://docs.python.org/3/library/importlib.html

...