从str或bytes继承的enum的优雅实现

AnyStrEnum的Python项目详细描述


任何强度

Python 3.7PyPi Package Version

从str或bytes继承的枚举的优雅实现

就这么简单

fromanystrenumimportStrEnumclassSeason(StrEnum):spring:strsummer:strautumn:strwinter:strprint(Season.summer)print(isinstance(Season.summer,str))# summer# True

功能

  • 使用类型提示轻松分配成员(不需要使用auto()或其他存根)
  • 支持自定义转换器或分隔符的自动值生成
  • 方法来筛选成员(containscontained_instartswithendswith等)
  • 自定义strbytes类型支持

安装

$ pip install AnyStrEnum

示例

使用自定义单词分隔符

若要自动将名称中的所有下划线(_)替换为更合适的值,请使用sep参数:

fromanystrenumimportStrEnumclassRegion(StrEnum,sep='-'):us_east_1:strus_west_1:strca_central_1:strcn_northwest_1:streu_central_1:streu_west_1:streu_north_2:strsa_east_1:strprint(Region.us_east_1)# us-east-1

使用str转换器和自定义单词分隔符

如果需要对名称应用更多更改,可以使用converter参数。在此处传递一个将对每个成员调用的函数

fromanystrenumimportStrEnumclassContentType(StrEnum,converter=lambdas:s.replace('_','/',1),sep='-'):application_json:strapplication_octet_stream:strapplication_x_json_stream:straudio_mpeg:straudio_pcm:straudio_ogg:strprint(ContentType.application_octet_stream)# application/octet-stream

从一个例子中可以看到,首先,名称将使用lambda函数进行转换,然后, 其余下划线将替换为给定的分隔符

筛选枚举成员

使用前面示例中的枚举
print(ContentType.filter(contains='-',startswith='a',endswith='m'))# {<ContentType.application_octet_stream: 'application/octet-stream'>,# <ContentType.application_x_json_stream: 'application/x-json-stream'>}print(ContentType.filter(contained_in='Usually content type for MP3 is audio/mpeg'))# {<ContentType.audio_mpeg: 'audio/mpeg'>}print(Region.filter(startswith='eu',endswith='1'))# {<Region.eu_west_1: 'eu-west-1'>, <Region.eu_central_1: 'eu-central-1'>}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在TextView中对齐部分文本   带有iText和eTPKCS11的java PKCS#11签名。dll&SunPKCS11提供程序   java Intellij Idea找不到jar   java Chrome/Firefox和Jetty HTTPS   java我无法打包找不到的JavaFX应用程序模块   多线程Java:排序从异步任务检索的结果   java客户端/服务器socket不能与外部连接一起工作   java如何在单击“下一步”按钮时获取其他详细信息?   java组织。springframework。网状物客户RestTemplate应声明为@Bean,而plain@Autowired抛出错误   java如何绘制javax。摆动将ImageIcon转换为JavaFX。fxml呈现用户界面?   使用for循环的Java跟踪   java如何编码字符串以显示彩色文本(基于字符串中的前缀)   Java保存/打开文件对象   基于java复选框的搜索:使用尽可能多的“”动态生成准备好的语句作为选中复选框的计数   java为什么crawler4j随机挂起?