web-dev-qa-db-ja.com

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"

問題は、それがうまく機能していないことです。

9

今、私はこの列挙型で変数をこのように割り当てています

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):
23
Ethan Furman