python变量是否在类中-普通常规类也可以判断

枚举类

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

#!/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:
k:__weakref__ v:
'''

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枚举类定义和使用(详解版)

你可能感兴趣的:(Python,python)