当前位置: 首页 > news >正文

【Python】修改枚举的取值及链式调用

author: jwensh
date: 2023.02.11

文章目录

  • 枚举的取值及链式调用
    • 需求背景
    • 1. enum.key 即获取值(而不是 enum.key.value)
    • 2. 多级链式调用

枚举的取值及链式调用

需求背景

测试过程中需要很多参数化的设置及编程规范要求,希望修改数据不修改代码。最近测试区块链的时候有很多这样的需求,所以这里搞一下

1. enum.key 即获取值(而不是 enum.key.value)

  • 因为我不要知道 key 是什么,code review 的时候我看到 key 即可知道其作用

  • 使用元类进行继承

from enum import Enum, unique, EnumMetaclass EnumDirectValueMeta(EnumMeta):"""可以解决调用枚举属性时,由类型 enum 变成 string需要枚举类继承: Enum, metaclass=EnumDirectValueMeta"""def __getattribute__(cls, name):value = super().__getattribute__(name)if isinstance(value, cls):value = value.valuereturn value
  • 实际的枚举
@unique
class Conservator(Enum, metaclass=EnumDirectValueMeta):ADDRESS_A = "0x0000000000000000000000000000000000000000"PRIVATE_KEY_A = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"ADDRESS_B = "0x0000000000000000000000000000000000000001"PRIVATE_KEY_B = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"if __name__ == '__main__':print(Conservator.ADDRESS_A) # 0x0000000000000000000000000000000000000000

2. 多级链式调用

  • 常用用于网络状态相关的定义
from enum import Enumclass DeviceStatus(Enum):UNCONNECTED = (10008, "Check if your device is connected properly")CURRT_PKG = (10001, "got mobile current running package name happened error")def __init__(self, code, msg):self.code = codeself.msg = msgif __name__ == '__main__':print(DeviceStatus.UNCONNECTED.code) #10008print(DeviceStatus.UNCONNECTED.msg) #Check if your device is connected properlyprint(DeviceStatus.CURRT_PKG.msg) # got mobile current running package name happened error
http://www.lryc.cn/news/2440.html

相关文章:

  • 复现篇--zi2zi
  • 153、【动态规划】leetcode ——416. 分割等和子集:滚动数组(C++版本)
  • linux head命令(head指令)(获取文件或管道输出结果前n行,默认前10行)与sed命令区别
  • Mysql数据库09——分组聚合函数
  • 第43章 菜单实体及其约束规则的定义实现
  • OpenAI最重要的模型【CLIP】
  • 分享112个JS菜单导航,总有一款适合您
  • MySQL 3:MySQL数据库基本操作 DQL
  • sql语句的优化
  • Shell脚本之——自动安装JDK
  • 大数据---Hadoop安装Hadoop简易版
  • Spring框架中使用到的设计模式以及对应的类(方法)
  • 类和类的定义
  • 丝绸之路——NFT 系列来袭!
  • 配置CMAKE编译环境:VSCODE + MinGW
  • 六、mybatis与spring的整合
  • JavaWeb--JDBC
  • 大数据框架之Hadoop:入门(四)Hadoop运行模式
  • 《爆肝整理》保姆级系列教程python接口自动化(十一)--发送post【data】(详解
  • 【微服务】Nacos注册中心
  • 跟开发打了半个月后,我终于get报bug的正确姿势了
  • js万能类型检测Object.prototype.toString.call——定制Object.prototype.toString.call的检测结果
  • 激光slam学习笔记2--激光点云数据结构特点可视化查看
  • SpringBoot笔记【JavaEE】
  • 目标检测算法之voxelNet与pointpillars对比
  • 电脑里的连接速度双工模式是什么?怎么设置
  • springboot整合单机缓存ehcache
  • 在阿里干了2年的测试,总结出来的划水经验
  • 硬盘分类及挂载硬盘知识补充和介绍
  • 【MyBatis】自定义映射resultMap