O caso de StrEnum em Python 3.11
Dec 21 2022
Com a atualização para o Python 3.11, encontramos uma mudança sutil em como o Enum se comporta.
Com a atualização para o Python 3.11, encontramos uma mudança sutil em como o Enum se comporta. Isso se deve ao PEP 663 — padronização dos comportamentos Enum str(), repr() e format() .
Antes do Python 3.11
Antes do Python 3.11, uma string enum conforme mostrado abaixo retornaria o valor de uma entrada na enum quando usada por meio de formato ou uma string f, mas não ao chamar implicitamente __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'
No Python 3.11, StrEnum foi adicionado à biblioteca padrão. Usar isso em vez do estilo de enums mencionado anteriormente torna o comportamento mais óbvio.
# 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'
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)