How To Override Iteration Behavior Of A Enum Flag Subclass?
I'm trying to override iteration behavior for a Flag enum: from enum import Flag, auto class MyFlags(Flag): A = auto() B = auto() C = auto() D = A | C de
Solution 1:
You can sublass EnumMeta
and then add metaclass=
to your Enum class:
from enum import Flag, EnumMeta, auto
class MyEnumMeta(EnumMeta):
def __iter__(self):
for x in super().__iter__():
if x.value % 2 == 0:
yield x
class MyFlags(Flag, metaclass=MyEnumMeta):
A = auto()
B = auto()
C = auto()
D = A | C
print(list(MyFlags))
Prints:
[<MyFlags.B:2>, <MyFlags.C:4>]
Post a Comment for "How To Override Iteration Behavior Of A Enum Flag Subclass?"