Usar el orden de definición de Enum como orden natural

Estoy tratando de crear unEnum subclase cuyos valores usan su orden de definición como su orden de clasificación natural, como en el ejemplo a continuación:

@functools.total_ordering
class SelectionType(enum.Enum):
     character = 'character'
     word = 'word'
     sentence = 'sentence'
     paragraph = 'paragraph'

     def __le__(self, other):
          if not isinstance(other, SelectionType):
                return NotImplemented

          return self._positions[self] < self._positions[other]

SelectionType._positions = {x: i for i, x in enumerate(SelectionType)}

¿Hay una manera más directa de obtener la posición de un valor enum en su orden de definición o de otra manera una mejor manera de hacerlo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta