Я пытаюсь расширить модуль calendar
для цветных дней в соответствии с переданным pd.Series, индексом которого являются даты, а значением является цветовой код (от 0 до 10).
Я недостаточно глубоко в ООП, чтобы сделать это. Класс TextCalendar
имеет метод formatyear
, который, в свою очередь, вызывает метод formatweek
.
Мое текущее решение состоит в том, чтобы определить class ColoredTextCalendar(TextCalendar)
, чье __init__()
устанавливает свойство класса date_to_color
(серия цветовых кодов панд, с датой в качестве индекса). Затем я в основном скопировал и вставил оригинальные методы formatyear
и formatweek
и изменил в них только две или три строки: formatyear
теперь вызывает formatweek
с дополнительными параметрами year
и month
, так что этот метод знает, какую фактическую дату он форматирует (ранее он просто печатал 7-дневную календарную неделю, например 12 13 14 15 16 17 18
). И formatweek
теперь ищет соответствующий код цвета в свойстве класса date_to_color
и соответственно окрашивает строку каждого дня.
То, что я делаю, вроде работает, но оно кажется неправильным, как будто должно быть более простое, более простое решение. Копирование и вставка длинного метода и изменение только нескольких строк кажется неправильным - это не то, как вы обычно делаете ООП, верно?