Создайте класс Python, поддерживающий сложение и вычитание дат

Document 对象参考手册Python3 Примеры

Мы создадим класс PythonDate, этот класс поддерживает сложение и вычитание дат. Мы будем использоватьdatetimeмодуль для обработки сложения и вычитания дат и проверки правильности формата даты.

Пример

from datetime import datetime, timedelta

class Date:
    def __init__(self, year, month, day):
        self.date = datetime(year, month, day)

    def __add__(self, days):
        new_date = self.date + timedelta(days=days)
        return Date(new_date.year, new_date.month, new_date.day)

    def __sub__(self, days):
        new_date = self.date - timedelta(days=days)
        return Date(new_date.year, new_date.month, new_date.day)

    def __str__(self):
        return self.date.strftime('%Y-%m-%d')

# Пример использования
date = Date(2023, 10, 1)
print("Начальная дата:", date)

date_plus_10 = date + 10
print("Дата после добавления 10 дней:", date_plus_10)

date_minus_5 = date - 5
print("Дата после вычитания 5 дней:", date_minus_5)

Пояснение к коду:

  1. __init__Метод: инициализацияDateКласс принимает год, месяц и день в качестве параметров и преобразует их вdatetimeобъекты.
  2. __add__Метод: перегрузка оператора сложения+, позволяет добавить к объекту даты количество дней, возвращая новыйDateобъект.
  3. __sub__Метод: перегрузка оператора вычитания-, позволяет вычесть из объекта даты количество дней, возвращая новыйDateобъект.
  4. __str__Метод: переопределение метода строкового представления, возвращает форматированную строку даты.

Результат вывода:

初始日期: 2023-10-01
加 10 天后的日期: 2023-10-11
减 5 天后的日期: 2023-09-26

Document 对象参考手册Python3 Примеры

Другие расширения