编写类 `MyDate` 具有属性年月日,要求一个构造函数初始化属性年月日,提供重置日期、增加日期(考虑闰年闰月)、输出日期等成员函数。
时间: 2023-05-31 18:07:03 浏览: 137
以下是 `MyDate` 类的实现:
```python
class MyDate:
def __init__(self, year, month, day):
self.year = year
self.month = month
self.day = day
def reset_date(self, year, month, day):
self.year = year
self.month = month
self.day = day
def add_days(self, n):
days_per_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if self.is_leap_year():
days_per_month[2] = 29
while n > 0:
days_in_month = days_per_month[self.month]
if self.month == 2 and self.is_leap_year():
days_in_month = 29
if self.day + n <= days_in_month:
self.day += n
n = 0
else:
n -= days_in_month - self.day + 1
self.day = 1
if self.month == 12:
self.year += 1
self.month = 1
else:
self.month += 1
def is_leap_year(self):
if self.year % 4 != 0:
return False
elif self.year % 100 != 0:
return True
elif self.year % 400 != 0:
return False
else:
return True
def output_date(self):
print("%d-%02d-%02d" % (self.year, self.month, self.day))
```
上述代码实现了以下成员函数:
- `__init__(self, year, month, day)`:构造函数,初始化属性年月日。
- `reset_date(self, year, month, day)`:重置日期,将属性年月日设置为给定的值。
- `add_days(self, n)`:增加日期,将日期增加 n 天。在增加日期时需要考虑闰年和闰月的情况。
- `is_leap_year(self)`:判断当前年份是否为闰年。
- `output_date(self)`:输出日期,格式为 yyyy-mm-dd。
使用示例:
```python
# 创建 MyDate 对象
date = MyDate(2022, 2, 28)
# 输出日期
date.output_date() # 2022-02-28
# 增加日期
date.add_days(3)
date.output_date() # 2022-03-03
# 重置日期
date.reset_date(2021, 12, 31)
date.output_date() # 2021-12-31
```
阅读全文