Я полагаю, что был бы какой-то способ сделать это. Но я чувствую себя вынужденным спросить, действительно ли достаточно большая разница в удобочитаемости от этого
Allocation(Param1 = Val1, Param2 = Val2 )
К этому:
Allocation(Param 1 = Val1, Param 2 = Val2 )
, чтобы изменить это? Я уверен, что есть способ сделать то, что вы хотите сделать, но я в первую очередь обеспокоен, если затраченные усилия окупятся.
Моя цель - предоставить DSL, который можно использовать для ввода данных в систему. В приведенном выше сценарии параметры будут именами людей, а значения - процентами.
Теперь я лучше понимаю, что вы хотите сделать, но я все же думаю, что вам, возможно, придется пожертвовать некоторой читабельностью, чтобы получить то, что вы хотите. Лично я бы пошел с чем-то вроде:
Allocation(
{ 'name1' : value1,
'name1' : value2, }
)
Если это не то, с чем вы можете пойти, то вы можете пересмотреть вопрос о том, хотите ли вы использовать Python для DSL или использовать что-то домашнее. Разрешение пробелов допускает слишком много неоднозначностей для большинства языков программирования, чтобы это разрешать.
Если вы все еще хотите продолжить работу с использованием python, вы можете рассмотреть возможность публикации в C-API SIG ( SIGS ) или, возможно, python-dev list (как в крайнем случае). Единственный способ сделать это - встроить интерпретатор python в программу на C / C ++ и выполнить какой-то взлом (что может быть сложно!).