El caso de StrEnum en Python 3.11
Dec 21 2022
Con la actualización a Python 3.11, nos encontramos con un cambio sutil en el comportamiento de Enum.
Con la actualización a Python 3.11, nos encontramos con un cambio sutil en el comportamiento de Enum. Esto es gracias a PEP 663 — Estandarizar los comportamientos de Enum str(), repr() y format() .
Antes de Python 3.11
Antes de Python 3.11, una enumeración de cadena como se muestra a continuación devolvería el valor de una entrada en la enumeración cuando se usa a través de formato o una cadena f, pero no cuando se llama implícitamente a __str__().
# Python 3.10
from enum import Enum
class Foo(str, Enum):
BAR = "bar"
x = Foo.BAR
x # Outputs <Foo.BAR: 'bar'>
f"{x}" # Outputs 'bar'
"{}".format(x) # Outputs 'bar'
str(x) # Outputs 'Foo.BAR'
x.value # Outputs 'bar'Python 3.11
# Python 3.11
from enum import Enum
class Foo(str, Enum):
BAR = "bar"
x = Foo.BAR
x # Outputs <Foo.BAR: 'bar'>
f"{x}" # Outputs 'Foo.BAR'
"{}".format(x) # Outputs 'Foo.BAR'
str(x) # Outputs 'Foo.BAR'
x.value # Outputs 'bar'
En Python 3.11, StrEnum se agregó a la biblioteca estándar. Usar eso en lugar del estilo de enumeraciones antes mencionado hace que el comportamiento sea más obvio.
# Python 3.11
from enum import StrEnum, auto
class Foo(StrEnum):
BAR = auto()
x = Foo.BAR
x # Outputs <Foo.BAR: 'bar'>
f"{x}" # Outputs 'bar'
"{}".format(x) # Outputs 'bar'
str(x) # Outputs 'bar'
x.value # Outputs 'bar'

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































