2016-07-15 134 views
0

枚举类型我有这样如何检查变量是否在python

@enum.unique 
class TransactionTypes(enum.IntEnum): 
    authorisation = 1 
    balance_adjustment = 2 
    chargeback = 3 
    auth_reversal = 4 

枚举现在我分配与此枚举这样

a = TransactionTypes 

我要检查一个变量为“A”的类型,做的东西,如果它的一个枚举和别的东西,如果它不枚举

我想是这样的

if type(a) == enum: 
    print "do enum related stuff" 
else: 
    print "do something else" 

问题是它不能正常工作。

+0

'enum'是模块,为什么会等于'型(TransactionTypes)' ?你想'如果issubclass(a,enum.Enum):'? – jonrsharpe

回答

7

现在我与此枚举为变量赋值这样

a = TransactionTypes 

我希望你是不是,因为你只是分配给a什么是整个枚举,其成员不是一个(如TransactionTypes.chargeback)如果是真的,你想做的事,那么正确的测试将是:

if issubclass(a, enum.Enum) 

但是,如果你真的意思是这样的:

a = TransactionTypes.authorisation 

那么你需要测试的是:

# for any Enum member 
if isinstance(a, Enum): 

# for a TransactionTypes Enum 
if isinstance(a, TransactionTypes):