Мне передают списки строк, которые я хотел бы преобразовать в вызовы методов, используя functools.partial:
[ 'object1.method1(arg1, arg2, 4, key=value)', 'object2.method2(6, arg1)' ...]
Легко использовать регулярное выражение для генерации необходимого аргумента 'func' для functools.частично, но у меня дьявольское время, когда я легко конвертирую строку в скобках в действительные * args и ** kwargs для передачи в functools.partial.
Каждый элемент списка гарантированно будет действительным Python.Я просто не могу придумать быстрый и простой способ конвертировать строки, такие как 'arg1, arg2, 4, key = value', в нечто, что может использовать functools.partial.Чего мне не хватает?
Обновление:
Мои извинения.Я забыл жизненно важную информацию.Аргументы не являются допустимыми идентификаторами в рамках этой процедуры, поэтому 'eval' не работает.Однако они верны в области, в которой будут использоваться результирующие частичные объекты, поэтому их можно «копировать» как литералы.Моя текущая процедура возвращает строку «arg1, arg2, 4, this = that».Если передать непосредственно в functools.partial, functools.partial «оборачивает» его в один строковый аргумент.
Хммм ... чем больше я это описываю, тем больше понимаю, что нет способа сделать это, если только эти идентификаторыдействительны в этой области ...