Как использовать try и кроме внутри класса в ООП в Python - PullRequest
0 голосов
/ 30 апреля 2019

Я совершенно новичок в ООП в 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())
...