Open gswifort opened 2 days ago
super().__or__()
super().__or__()
Yes, it is a workaround, but I use mixins so as not to add the method in all derived classes. It's easier to add them in __init_subclass__
:
class Mixin:
def __or__(self, value): ...
def __init_subclass__(cls) -> None:
setattr(cls, "__or__", Mixin.__or__)
When I define methods
('__or__', '__and__', '__xor__', '__ror__', '__rand__', '__rxor__', '__invert__')
directly in the class inheriting fromenum.Flag
, these methods are "added" (mro) to the members, however, if the method is defined in the mixin, the methods defined inenum.Flag
are added (e.g.Flag.__or__
). I would expect methods to be called from mixin.https://github.com/python/cpython/blob/089835469d5efbea4793cd611b43cb8387f2e7e5/Lib/enum.py#L610-L619