Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: pattern, state, architecture

Что такое паттерн Состояние (State)?

Паттерн Состояние позволяет объекту изменять своё поведение в зависимости от текущего состояния.

Короткий ответ

Паттерн Состояние реализует поведение как набор отдельных классов для каждого состояния. Это позволяет объекту менять своё поведение динамически при переходе между состояниями.

Длинный ответ

Паттерн Состояние позволяет избежать сложных условных конструкций, которые описывают, как объект должен вести себя в зависимости от состояния. Вместо этого каждое состояние реализуется как отдельный класс.

Пример из реальной жизни:
Представьте кофемашину, которая может быть в состояниях "ожидание", "приготовление кофе", "выдача кофе". Каждое состояние имеет своё уникальное поведение.

Реализация в Python:

class State:
    	def handle(self):
        	pass

class WaitingState(State):
    	def handle(self):
        	print("Кофемашина ожидает выбора напитка.")

class BrewingState(State):
    	def handle(self):
        	print("Кофемашина готовит кофе.")

class DispensingState(State):
    	def handle(self):
        	print("Кофемашина выдаёт кофе.")

class CoffeeMachine:
    	def __init__(self):
        	self.state = WaitingState()

    	def set_state(self, state):
        	self.state = state

    	def press_button(self):
        	self.state.handle()

# Использование
machine = CoffeeMachine()
machine.press_button()

machine.set_state(BrewingState())
machine.press_button()

machine.set_state(DispensingState())
machine.press_button()

Когда использовать:

  • Когда объект должен изменять своё поведение в зависимости от состояния.

  • Для уменьшения сложности кода с большим количеством условных конструкций.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    8

Навыки

  • Python

    Python

Ключевые слова

#pattern

#state

#architecture

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.