首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >这个“枚举”成语是如何工作的?

这个“枚举”成语是如何工作的?
EN

Stack Overflow用户
提问于 2014-03-09 01:29:56
回答 1查看 281关注 0票数 2

我已经用了很长一段时间了-我想不起来我是在哪里找到的:

代码语言:javascript
代码运行次数:0
运行
复制
#####
#  An enumeration is handy for defining types of event 
#  (which otherwise would messily be just random strings)

def enum(**enums):
    return type('Enum', (), enums)

#####
#   The control events that the Controller can process
#   Usually this would be in a module imported by each of M, V and C
#   These are the possible values for the "event" parameter of an APP_EVENT message

AppEvents = enum(APP_EXIT = 0,
                 CUSTOMER_DEPOSIT = 1,
                 CUSTOMER_WITHDRAWAL = 2)

它怎麽工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-09 01:36:48

当以这种方式调用时,type会动态声明一个类型。来自文档

使用三个参数,返回一个新的类型对象。这本质上是类语句的一种动态形式。名称字符串是类名,并成为名称属性;基元组分组化基类,并成为属性;而dict字典是包含类主体定义的命名空间,并成为dict属性。

所以类型名是'Enum‘,没有基类。

enum函数有一个**enums参数,它接受所有命名的参数并将它们放入字典对象中。

在您的例子中,enums变量是

代码语言:javascript
代码运行次数:0
运行
复制
{
    'APP_EXIT': 0,
    'CUSTOMER_DEPOSIT':  1,
    'CUSTOMER_WITHDRAWAL': 2,
}

这些属性成为返回类型的属性。

Enum已经添加到Python3.4中,后座被添加到2.4+中。(另见我如何用Python表示'Enum‘?)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22277318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档