Module (56%)
Section (87%)
Лабораторная работа

Время выполнения

30-60 минут

Уровень сложности

Низкий/Средний

Цели

  • улучшение навыков учащегося в создании классов с нуля;
  • определение и использование переменных экземпляра;
  • определение и использование методов.

Сценарий

Ваша задача - реализовать класс под названием Weeker. Да, Ваши глаза не обманывают Вас - это название происходит от того факта, что объекты этого класса могут хранить и управлять днями недели.

Конструктор класса принимает один аргумент - строку. Строка представляет собой название дня недели, и единственные допустимые значения должны поступать из следующего набора:

Mon Tue Wed Thu Fri Sat Sun

Вызов конструктора с аргументом извне этого набора должен вызвать исключение WeekDayError (определите его самостоятельно; не беспокойтесь, скоро мы поговорим об объективной природе исключений). Класс должен предоставить следующие возможности:

  • объекты класса должны быть "печатаемыми", т.е. они должны иметь возможность неявно преобразовывать себя в строки той же формы, что и аргументы конструктора;
  • класс должен быть оснащен однопараметрическими методами с именами add_days(n) и subtract_days(n), где n является целым числом число и обновление дня недели, хранящегося внутри объекта, таким образом, чтобы отразить изменение даты на указанное количество дней вперед или назад.
  • все свойства объекта должны быть скрытыми;

Заполните шаблон, который мы предоставили в редакторе, запустите свой код и проверьте, выглядит ли Ваш результат так же, как наш.

Ожидаемый вывод

Mon Thu Sun Sorry, I can't serve your request.



Code

class WeekDayError(Exception):
pass


class Weeker:
#
# Напишите здесь код.
#

def __init__(self, day):
#
# Напишите здесь код.
#

def __str__(self):
#
# Напишите здесь код.
#

def add_days(self, n):
#
# Напишите здесь код.
#

def subtract_days(self, n):
#
# Напишите здесь код.
#


try:
weekday = Weeker('Mon')
print(weekday)
weekday.add_days(15)
print(weekday)
weekday.subtract_days(23)
print(weekday)
weekday = Weeker('Monday')
except WeekDayError:
print("Sorry, I can't serve your request.")
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×