Python-namedtuple,enum

本文介绍了Python中namedtuple的使用方法,包括定义和访问方式,并提供了五个模拟枚举类型的实例,帮助读者更好地理解和运用这两种数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.namedtuple的用法

python中tuple是一个非常高效的集合对象,但是我们只能通过索引的方式访问这个集合中的元素。

import collections

Person=collections.namedtuple('Person','name age gender')
print'Type of Person:',type(Person)

Bob=Person(name='Bob',age=30,gender='male')
print'Representation:',Bob

Jane=Person(name='Jane',age=29,gender='female')

print'Field by Name:',Jane.name

for people in[Bob,Jane]:
    print"%s is %d years old %s" % people

来解释一下nametuple的几个参数,以Person=collections.namedtuple(‘Person’,’name age gender’)为例,其中’Person’是这个namedtuple的名称,后面的’name age gender’这个字符串中三个用空格隔开的字符告诉我们,我们的这个namedtuple有三个元素,分别名为name,age和gender。我们在创建它的时候可以通过Bob=Person(name=’Bob’,age=30,gender=’male’)这种方式,这类似于Python中类对象的使用。而且,我们也可以像访问类对象的属性那样使用Jane.name这种方式访问namedtuple的元素。其输出结果如下:

Type of Person: <type 'type'>
Representation: Person(name='Bob', age=30, gender='male')
Field by Name: Jane
Bob is 30 years old male
Jane is 29 years old female

2.Python中模拟enum枚举类型的5种方法

# way1
class Directions:
    up = 0
    down = 1
    left = 2
    right =3

print Directions.down


# way2
dirUp, dirDown, dirLeft, dirRight = range(4)
print dirDown


# way3
import collections
dircoll=collections.namedtuple('directions', ('UP', 'DOWN', 'LEFT', 'RIGHT'))
directions=dircoll(0,1,2,3)
print directions.DOWN


# way4
def enum(args, start=0):
    class Enum(object):
        __slots__ = args.split()
        def __init__(self):
            for i, key in enumerate(Enum.__slots__, start):
                setattr(self, key, i)
    return Enum()
e_dir = enum('up down left right')
print e_dir.down


# way5
# some times we need use enum value as string
Directions = {'up':'up','down':'down','left':'left', 'right':'right'}
print Directions['down']
### Python 枚举类型 (Enum) 的用法 Python 中的 `enum` 模块提供了一种定义枚举类型的机制,它使得代码更具可读性和健壮性。以下是关于如何使用 `enum` 的一些例子。 #### 基本用法 可以通过 `Enum` 创建一个简单的枚举类型。下面是一个基本的例子: ```python from enum import Enum class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 ``` 在这个例子中,`Color` 是一个枚举类,具有三个成员:`RED`, `GREEN`, 和 `BLUE`[^1]。 #### 使用功能 API 定义枚举 除了通过类的方式创建枚举外,还可以使用函数式的 API 来快速定义枚举: ```python from enum import Enum Animal = Enum('Animal', 'ANT BEE CAT DOG') print(Animal.ANT) # 输出: Animal.ANT ``` 这种方式类似于 `namedtuple` 的语法结构,在某些场景下更加简洁明了。 #### 继承多个基类的枚举 如果需要让枚举具备额外的功能,比如整数比较或者字符串操作,则可以利用多重继承来实现特定行为。例如,`IntEnum` 和 `StrEnum` 就是这样设计出来的: ```python from enum import Enum, IntEnum class Shape(IntEnum): CIRCLE = 1 SQUARE = 2 if Shape.CIRCLE < Shape.SQUARE: print("Circle has a lower value than Square.") else: print("Square does not have a higher value than Circle.") # 自定义 StrEnum 示例 class MyStrEnum(str, Enum): HELLO = "hello" WORLD = "world" print(MyStrEnum.HELLO.value.upper()) # 输出: HELLO ``` 这里展示了如何基于内置数据类型构建更复杂的枚举逻辑[^2]。 #### 注释风格建议 当编写涉及复杂业务逻辑或大量属性配置时,遵循良好的文档习惯非常重要。Google 推荐的一种注释方式如下所示: ```python class Status(Enum): """ Summary of status codes. This enumeration defines various states that an entity can be in. Attributes: SUCCESS: Indicates successful completion without errors. FAILURE: Represents failure due to some issue during processing. PENDING: Used when action hasn't been completed yet but is ongoing. """ SUCCESS = 0 FAILURE = 1 PENDING = 2 ``` 上述代码片段按照 Google 风格指南提供了清晰易懂的说明[^3]。 --- ### 总结 以上介绍了几种常见的 Python 枚举类型及其应用实例,包括基础定义方法、高级特性以及最佳实践中的注解技巧等内容。希望这些信息能够帮助您更好地理解和运用 Python 的 `enum` 功能!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值