Я совершенно новичок в ООП в Python. В следующем коде я написал класс, который вычисляет текущий возраст человека, получая дату рождения. Входными данными является дата рождения, такая как 1995/15/02
. Я хотел бы обработать ошибку, если пользователь вводит месяц больше 12 или день больше 31.
Я хочу напечатать слово WRONG
, если месяц или день не входят в ожидаемый домен. Я попробовал следующий код. Но я получаю AttributeError
постоянно.
Как я могу поймать ошибку, используя try
и except
, не обращаясь к AttributeError
.
Любая помощь очень ценится.
from datetime import date
class CurrentAge:
def __init__(self):
self.birth_date = input()
self.set_Birth_Date()
def set_Birth_Date(self):
year_month_day =[int(x) for x in self.birth_date.split("/")]
""" month and day should be integers and hold the conditions 0 < month < 13
0 < day < 32 """
self.year = year_month_day[0]
try:
if 0 < year_month_day[1] and year_month_day[1]< 13:
self.month = year_month_day[1]
else:
raise TypeError("month must be between 1 and 12!")
except TypeError as exp:
print("Wrong")
try:
if 0 < year_month_day[2] and year_month_day[2] < 32:
self.day = year_month_day[2]
else:
raise TypeError("day should be between 1 and 31!")
except:
print("Wrong")
def get_age(self):
self.current_year = date.today().year
self.current_month = date.today().month
self.current_day = date.today().day
self.current_age = self.current_year - self.year
if self.current_month < self.month:
self.current_age-=1
elif self.current_month == self.month and self.current_day < self.day:
self.current_age-=1
return(self.current_age)
A = CurrentAge()
print(A.get_age())