Создайте класс Python, поддерживающий сложение и вычитание дат
Мы создадим класс 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)
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)
Пояснение к коду:
__init__Метод: инициализацияDateКласс принимает год, месяц и день в качестве параметров и преобразует их вdatetimeобъекты.__add__Метод: перегрузка оператора сложения+, позволяет добавить к объекту даты количество дней, возвращая новыйDateобъект.__sub__Метод: перегрузка оператора вычитания-, позволяет вычесть из объекта даты количество дней, возвращая новыйDateобъект.__str__Метод: переопределение метода строкового представления, возвращает форматированную строку даты.
Результат вывода:
初始日期: 2023-10-01 加 10 天后的日期: 2023-10-11 减 5 天后的日期: 2023-09-26Другие расширения
Python3 Примеры