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

标签 python-2.7 enums typechecking

我有一个像这样的枚举

@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"


问题是它不能正常工作。

最佳答案

现在我用这个枚举分配一个变量


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):

关于python-2.7 - 如何在python中检查变量是否为enum类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38393897/

相关文章:

swift - 我如何在 Swift 中初始化这种包含属性但没有构造函数的枚举?

python - 检查函数参数类型是 Pythonic 吗?

c++ - 检查多态性中的真实变量类型 (C++)

python - 使用 Python 2.7 在 Windows 上运行 Scapy

python-2.7 - 如何解决此错误消息 : ERROR: virtualenvwrapper could not find virtualenv in your path?

java - 用于设置枚举的字符串值

javascript - 如何在 JavaScript 中引用 Arguments 类?

Python 字典计数

python - 如果未实现 __lt__ 协议(protocol),比较如何进行?

java - 将魔数(Magic Number)映射到枚举值,反之亦然