python:编写一个日期类MyDate,拥有年月日的数据,定义MyDate的__init__函数实现对象的初始化,在数据不合理时抛出异常
时间: 2024-02-03 10:14:03 浏览: 76
可以按照以下方式实现MyDate类:
```python
class MyDate:
def __init__(self, year, month, day):
if not self._is_valid_date(year, month, day):
raise ValueError("Invalid date!")
self.year = year
self.month = month
self.day = day
def _is_valid_date(self, year, month, day):
# 检查年份是否合法
if year < 1 or year > 9999:
return False
# 检查月份是否合法
if month < 1 or month > 12:
return False
# 检查日期是否合法
if day < 1 or day > self._get_days_in_month(year, month):
return False
return True
def _get_days_in_month(self, year, month):
# 根据月份和是否闰年返回该月的天数
if month in [1, 3, 5, 7, 8, 10, 12]:
return 31
elif month in [4, 6, 9, 11]:
return 30
elif self._is_leap_year(year):
return 29
else:
return 28
def _is_leap_year(self, year):
# 判断是否为闰年
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
return True
else:
return False
```
在上面的代码中,首先在`__init__`函数中检查传入的年、月、日是否合法,如果不合法则抛出异常。然后将年、月、日保存到对象的属性中。在类中还实现了两个辅助函数`_is_valid_date`和`_get_days_in_month`,用于检查日期的合法性和返回指定月份的天数。
阅读全文