Случай с StrEnum в Python 3.11
Dec 21 2022
С обновлением до Python 3.11 мы столкнулись с тонким изменением поведения Enum.
С обновлением до Python 3.11 мы столкнулись с тонким изменением поведения Enum. Это благодаря PEP 663 — Стандартизация поведения Enum str(), repr() и format() .
До Python 3.11
До Python 3.11 строковое перечисление, как показано ниже, возвращало значение записи в перечислении при использовании через формат или f-строку, но не при неявном вызове __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'
В Python 3.11 StrEnum был добавлен в стандартную библиотеку. Использование этого вместо вышеупомянутого стиля перечислений делает поведение более очевидным.
# 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'

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































