Часть служебной системы, которую я пишу в пакете AcecoolLib, перенося всю / большую часть моей логики на Python и другие языки, содержит простой, но очень полезный помощник ... функцию с именем ENUM.
Он имеет много полезных функций, таких как автоматическое создание карт перечислений, расширенных или обратных карт, если у вас есть карта, назначенная не только для значений, и намного больше.
Он может создавать карты для динамического генерирования имен функций, он может создавать простые карты между перечислением и текстовыми или строковыми идентификаторами языка и многое другое.
Объявление функции также просто:
def ENUM( _count = None, *_maps ):
У него есть дополнительный помощник ... Здесь: https://www.dropbox.com/s/6gzi44i7dh58v61/dynamic_properties_accessorfuncs_and_more.py?dl=0
Другой не используется. ENUM_MAP
есть, а другой нет.
В любом случае, прежде чем я начну изучать и т. Д. И т. Д., Вопрос:
Как подсчитать возвращаемые переменные внефункция ... т.е.:
ENUM_EXAMPLE_A, ENUM_EXAMPLE_B, ENUM_EXAMPLE_C, ENUM_LIST_EXAMPLE, MAP_ENUM_EXAMPLE = ENUM( None, [ '#example_a', '#example_b', '#example_c' ] )
Где List - это простой список 0 = 0, 1 = 1, 2 = 2
или что-то в этом роде. , затем карта связывает так [ 0 = '#example_a', 1 = '#example_b', etc.. ]
, затем [ '#example_a' = 0, etc.. ]
для обратного ... или что-то в этом роде.
Существуют и другие сложные варианты использования, не уверенные, есть ли у меня эти функции в файле выше,но независимо ... я пытаюсь просто посчитать возвращаемые переменные ... и получить имена.
Я знаю, что вполне возможно, прочитать строку, из которой выполняется вызов ... читатьфайл, получить строку, разбить ее на части и сделать все это ... но я надеюсь, что что-то существует, чтобы сделать это без необходимости кодировать его с нуля в стандартной системе Python ...
inкратко: я бы хотел избавиться от первого аргумента ENUM( _count, *_maps )
, чтобы использовался только необязательный *_maps
. Поэтому, если я вызову: ENUM_A, ENUM_B, ENUM_C, LIST_ENUMS = ENUM( );
, он обнаружит 4 выходных возврата и получит их имя, чтобы я мог видеть, содержит ли последний определенный текст, отличный от стиля первого ... т.е. если они хотят список,и т. д .... Если они добавляют карту, то необязательный список и т. д., и я могу просто отсчитать n _maps, чтобы найти список аргументов, или нет ...
Я знаю, что это, вероятно, ненеобходимо, но я хочу, чтобы это было легко и динамично, поэтому, если я добавлю новое перечисление в гигантский список, мне не нужно добавлять число (хотя для тех, кто использует карты, это означает, что я должен добавить запись в любом случае)...
В любом случае - я знаю в Lua, что это глупо легко сделать со встроенными функциями ... Я надеюсь, что в Python есть встроенные функции, которые также легко собирают данные.
Спасибо!