Вы не можете получить перечисления, они "запечатаны":
class Body(Vertical): pass
приводит к TypeError: Cannot extend enumerations
.
Если вы хотите, чтобы ваши составные перечисления сравнивались равными, вы можете использовать IntEnum
s:
from enum import IntEnum
class Vertical(IntEnum ):
Tall = 1
Short = 2
class Horizontal(IntEnum): # distinct int's
Slim = 3
Spacious = 4
composition = list(Vertical.__members__)
composition.extend(Horizontal.__members__)
Body = IntEnum('Body', composition)
Использование:
print(Body.Tall == Vertical.Tall) # True
print(Body.Tall == 1) # Also True
По сути, все сводится к следующему: ваши перечисления теперь тоже целые. Вы должны позаботиться о том, чтобы не давать одно и то же целое число различным понятиям:
class Sizes(IntEnum):
Tiny = 1
print(Sizes.Tiny == Vertical.Tall) # True - but not really?