Python中模拟enum枚举类型的5种方法分享
作者:junjie 发布时间:2022-05-04 01:00:10
标签:Python,enum
以下几种方法来模拟enum:(感觉方法一简单实用)
# 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']
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 套接字socket套接字(socket)是计算机之间进行通信的一种技术,它允许不同主机上的进程之间进行数据交换。在Python中,我们可以使
- 前言大家都知道Web运维总要关注相关域名的实时2xx/s、4xx/s、5xx/s、响应时间、带宽等这些指标,之前的日志是五分钟一分割,简单的
- 本文实例为大家分享了JS实现图片放大镜效果的具体代码,供大家参考,具体内容如下<!DOCTYPE html><html&g
- 在安装库的时候,一定要特别注意包之间的依赖性一、在Pycharm中直接安装第三方库1、打开Pycharm,点击左上角的File,点击Sett
- Docker 是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建、打包为一个轻量级容器,并在任何地方运行。Dock
- 基本要点:程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改)每个对象都有一个身份、一个类型、一个值例: >&
- VSCode 的 Remote Deployment 插件对 WSL2 直接提供了支持,能够很方便的连接本机的 WSL2 ,但是并没有提供一
- 朋友的网站要计算机票的折扣价格,并且在最后的折扣价格上应对个位进行四舍五入,同时在ASP和Javasc
- 前言Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。由于 Tki
- 本文实例讲述了python实现获取序列中最小的几个元素。分享给大家供大家参考。具体方法如下:import heapq import rand
- 0. 学习目标栈和队列是在程序设计中常见的数据类型,从数据结构的角度来讲,栈和队列也是线性表,是操作受限的线性表,它们的基本操作是线性表操作
- 当我们定义一个类的时候,有时候会定义一个私有属性来辅助开发。在其它语言中经常会用到 private 来修饰这个属性为私有属性。可是你知道么?
- 我们曾经提到,Oyster.com的Python web服务器怎样利用一个巨大的Python dicts(hash table),缓存大量的
- PHP simplexml_load_string() 函数实例转换形式良好的 XML 字符串为 SimpleXMLElement 对象,然
- 一直觉得wxpython占用内存比较多,在工作中写的一些小程序应用,一对比其它的小程序,发现内存相差确实有点大。测试了下QT框架import
- 这个问题的解决方案网上挺多的。其中我推荐的就是:with open(r"F:\Desktop\Book3.csv",
- 一、urllib库是什么?urllib库用于操作网页 URL,并对网页的内容进行抓取处理urllib包 包含以下几个模块:urllib.re
- 空mysqll表内容常见的有两种方法:一种delete,一种是truncate 。 不带where参数的delete语句可以删除mysql表
- 深度学习库Keras中的Sequential是多个网络层的线性堆叠,在实现AlexNet与VGG等网络方面比较容易,因为它们没有ResNet
- 一定要对用户可能输入的诸如引号,尖括号等特殊字符给予足够重视,它们可能引发严重的安全问题。SQL注入的基本手法之一,就是利用对单引号未加过滤