Кажется, это больше архитектурная проблема, чем проблема Python.
Если у вас есть набор функций, к которым вы никогда не хотите прикасаться, у вас должна быть каждая функция, связанная с вводным сообщением где-то (скорее всего, в однойисходный код функции, а не в XML).
Вы можете, например, поместить все функции в один файл и импортировать его как модуль.
Затем, когда вызапустите вашу программу, создайте список функций, которые вы хотите представить пользователю, каким-то образом отсортируйте их и отобразите входное сообщение для каждой функции.
Пример модуля:
def reset():
print "reset all"
def sendmail():
print "send mail"
funcs = {
"reset": {"function": reset, "message": "Choose to reset"},
"sendmail": {"function": sendmail, "message": "Choose to email someone"}
}
Таким образом, ваш xml должен содержать только ключи словаря funcs
.Затем, чтобы распечатать сообщение, вы должны использовать, например, funcs['reset']['message']
, а для использования функции вы должны использовать funcs['reset']['function'](args)
.
Это работает, я уже использовал нечто очень похожее.