枚举类

如果是枚举类型,那很简单

#!/bin/python3
# coding: utf-8
from enum import Enum
class Color(Enum):
    # 为序列值指定value值
    red = 1
    green = 2
    blue = 3

red = 1
print(red in Color)
# False

test_color = Color.red
print(test_color in Color)
# True

#调用枚举成员的 3 种方式 -- Color.red
print(Color.red)
print(Color['red'])
print(Color(1))

#调取枚举成员中的 value 和 name
print(Color.red.value) # 1
print(Color.red.name) # red

#遍历枚举类中所有成员的 2 种方式
for color in Color:
    print(color)
'''
Color.red
Color.green
Color.blue
'''

重头戏在非枚举类–普通类

利用vars可以把对象变成字典

class ColorCode(object):
    red = 1
    green = 2
    blue = 3

# print(red in ColorCode)
# 以上操作报错: Value 'ColorCode' doesn't support membership test
# 所以一般类怎么判断 变量是否在类中呢

for k, v in vars(ColorCode).items():
    print("k:{} v:{}".format(k, v))
'''
k:__module__ v:__main__
k:__doc__ v:
    vars()的注意点是,这个注释和一些其他东西都会输出
    
k:red v:1
k:green v:2
k:blue v:3
k:__dict__ v:<attribute '__dict__' of 'ColorCode' objects>
k:__weakref__ v:<attribute '__weakref__' of 'ColorCode' objects>
'''

int_value = 1
valid = False
for flag_value in vars(ColorCode).values():
    if int_value == flag_value:
        valid = True
        print('value in Class')
        break
# value in Class

test_color_2 = 'red'
if test_color_2 in vars(ColorCode).keys():
    print(test_color_2)
    print('name in Class')
'''
red
name in Class
'''

int_value = 4
if int_value not in vars(ColorCode).values():
    print('value not in Class')
'''
value not in Class
'''

参考

Python枚举类定义和使用(详解版)

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐