Advertisement
vmamontov

help_with_OOP_2

May 20th, 2022
753
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.27 KB | None | 0 0
  1. class User:
  2.     def __init__(self, name, last_name, birthday, email):
  3.         self.name = name
  4.         self.last_name = last_name
  5.         self.birthday = birthday
  6.         self.email = email
  7.         self.age = self.get_age() # создаётся переменная класса и ей присваивается значение из функции get_age()
  8.  
  9.     def get_age(self):
  10.         '''
  11.        Функция для расчёта возраста
  12.        на основе даты рождения и текущей даты
  13.        '''
  14.         from datetime import datetime
  15.        
  16.         birthday_datetime = datetime.strptime(self.birthday, '%d.%m.%Y') # преобразование 'строки' в формат 'дата'
  17.         today = datetime.now() # получаем текущую дату
  18.        
  19.         years = today.year - birthday_datetime.year # считаем разницу в годах (2022 - 1999)
  20.         diff = None
  21.         if (today.month * 100 + today.day) > (birthday_datetime.month * 100 + birthday_datetime.day):
  22.             diff = 1
  23.         else:
  24.             diff = 0
  25.         # это можно записать в одну строку:
  26.         # diff = 1 if today.month * 100 + today.day) > (birthday_datetime.month * 100 - birthday_datetime.day) else 0
  27.        
  28.         age = years - diff
  29.  
  30.         return age
  31.    
  32.     def get_status(self):
  33.         status = None
  34.         if self.name == 'Роман' and self.last_name == 'Филипов' and self.birthday == '13.08.1984':
  35.             status = "Герой России"
  36.         return status
  37.  
  38.  
  39.     def __str__(self):
  40.         if self.get_status():
  41.             return f"{self.name} {self.last_name}, {self.birthday} г.р., {self.get_status()}.\nВ этом году ему бы исполнилось {self.get_age()} лет."
  42.         else:
  43.             return "Приветик, меня зовут: " + str(self.name) + " " + str(self.last_name) + " , моя почта: "  + str(self.email) + ", я родился: " + int(self.birthday)
  44.  
  45.  
  46. u1 = User('Роман', 'Филипов', '13.08.1984', 'my_email@mail.ru')
  47. print(u1)
  48.  
  49. # OUT:
  50. # Роман Филипов, 13.08.1984 г.р., Герой России.
  51. # В этом году ему бы исполнилось 38 лет.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement