如何在python中检查变量是否为enum类型

Pra*_*gam 6 enums typechecking python-2.7

我有这样的枚举

@enum.unique
class TransactionTypes(enum.IntEnum):
    authorisation = 1
    balance_adjustment = 2
    chargeback = 3
    auth_reversal = 4
Run Code Online (Sandbox Code Playgroud)

现在我正在为此枚举分配一个变量

a = TransactionTypes
Run Code Online (Sandbox Code Playgroud)

我想检查'a'的类型,如果它是枚举和其他东西,如果它不是枚举,则做一些事情

我试过这样的事

if type(a) == enum:
    print "do enum related stuff"
else:
    print "do something else"
Run Code Online (Sandbox Code Playgroud)

问题是它不能正常工作.

Eth*_*man 23

现在我正在为此枚举分配一个变量

a = TransactionTypes
Run Code Online (Sandbox Code Playgroud)

我希望你不是,因为你刚刚分配的a是整个枚举,而不是它的一个成员(例如TransactionTypes.chargeback)如果那是你想要做的,那么正确的测试将是:

if issubclass(a, enum.Enum)
Run Code Online (Sandbox Code Playgroud)

但是,如果您实际上意味着:

a = TransactionTypes.authorisation
Run Code Online (Sandbox Code Playgroud)

然后你需要的测试是:

# for any Enum member
if isinstance(a, Enum):
Run Code Online (Sandbox Code Playgroud)

要么

# for a TransactionTypes Enum
if isinstance(a, TransactionTypes):
Run Code Online (Sandbox Code Playgroud)