【发布时间】:2019-11-06 19:24:09
【问题描述】:
我通过将所有/大部分逻辑移植到 Python 和其他各种语言来编写的实用程序系统的一部分我的 AcecoolLib 包包含一个简单但非常有用的帮助程序......一个名为 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 系统中从头开始编写代码...
简而言之:我想去掉ENUM( _count, *_maps ) 的第一个参数,以便只使用可选的*_maps。因此,如果我调用:ENUM_A, ENUM_B, ENUM_C, LIST_ENUMS = ENUM( );,它将检测 4 个输出返回,并获取它们的名称,以便我可以查看最后一个是否包含与第一个样式不同的某些文本......即,如果他们想要列表,等等......如果他们添加地图,然后添加可选列表等......我可以倒数 n _maps 来找到列表 arg,或者不......
我知道这可能没有必要,但我希望它简单而动态,所以如果我将一个新枚举添加到一个巨大的列表中,我不必添加数字(尽管对于那些我使用地图的人这意味着无论如何我都必须添加一个条目)...
无论哪种方式 - 我知道在 Lua 中,使用内置函数很容易做到这一点。我希望 Python 也有内置函数来轻松获取数据。
谢谢!
【问题讨论】:
-
快速评论 - 简化“询问”...
-
快速评论 - 如果我不必重写它,因为按错键会删除所有内容....我想创建 A, B, C = ENUM( );它返回 0, 1, 2 到 A, B, C 中,或多或少。或:A, B, C, LIST_ABC 并返回 0, 1, 2, [ 0 = 0, 1 = 1 2 = 2 ],或 A, B, C, LIST_ABC, MAP_ABC, MAPR_ABC = ENUM( { '#a' , '#b', '#c' } ) 并返回 0, 1, 2, [ 0 = 0, 1 = 1 2 = 2 ], [ 0 = '#a', 1 = '#b' 2 = ' #c' ], [ '#a = 0', '#b' = 1 '#c' = 2 ] ----- IE:对于包含 _maps 的时代,这很容易。但是如果使用(),我想计算调用者期望多少个args,并命名
-
调用者需要多少个 args,以及 args 的名称作为字符串 / 文本......当有人在枚举到列表之间转换时,如果他们甚至想要一个列表或只是枚举等......对于地图,它会让我看看他们是否想要一个列表等......简而言之,它会让新开发人员更有用和更容易使用(我教其他语言并正在尝试扩展我的知识,总是。).. -- -- 该评论删除了所有内容,然后不得不重新输入并且无法再编辑。房间也用完了……最后一部分先……
-
如果您有更多细节要添加,请将它们放在问题中,而不是 cmets。
-
您能考虑转用标准的
enum模块吗?必须保持两个列表同步在您的方法中看起来有点容易出错
标签: python input count return args