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
def __iter__(self):
for x in super().__iter__():
if x.value % 2 == 0:
yield x
But it seems the __iter__
is never actually called:
>>> list(MyFlags)
[MyFlags.A, MyFlags.B, MyFlags.C, MyFlags.D]
How can I override iteration behavior here?