Advertisement
Alaricy

Наследование в ООП 2/3

Jan 24th, 2022
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # импортируем функции из библиотеки math для рассчёта расстояния
  2. from math import radians, sin, cos, acos
  3.  
  4.  
  5. class Point:
  6.     def __init__(self, latitude, longitude):
  7.         self.latitude = radians(latitude)
  8.         self.longitude = radians(longitude)
  9.  
  10.     # считаем расстояние между двумя точками в км
  11.     def distance(self, other):
  12.         cos_d = sin(self.latitude) * sin(other.latitude) + cos(self.latitude) * cos(other.latitude) * cos(
  13.         self.longitude - other.longitude)
  14.  
  15.         return 6371 * acos(cos_d)
  16.  
  17. class City(Point):
  18.     def __init__(self, latitude, longitude, name, population):
  19.         super().__init__(latitude, longitude)
  20.         self.name=name
  21.         self.population=population
  22.        
  23.  
  24.     def show(self):
  25.         print(f"Город {self.name}, население {self.population} чел.")
  26.  
  27.  
  28. class Mountain(Point):
  29.     # допишите код: напишите конструктор, в нём сохраните свойства родителя
  30.     # и добавьте свойства name и height
  31.  
  32.     # Создайте метод show(self):
  33.     # информацию о горе нужно вывести в формате:
  34.     # "Высота горы <название> - <высота> м."
  35.     def __init__(self, latitude, longitude, name, height):
  36.         super().__init__(latitude, longitude)
  37.         self.name=name
  38.         self.height=height
  39.        
  40.  
  41.     def show(self):
  42.         print(f"Высота горы {self.name} - {self.height} м.")
  43.  
  44. # эта функция печатает расстояние
  45. # между двумя любыми наследниками класса Point
  46. def print_how_far(geo_object_1, geo_object_2):
  47.     print(f'От точки «{geo_object_1.name}» до точки «{geo_object_2.name}» — {geo_object_1.distance(geo_object_2)} км.')
  48.  
  49.  
  50. # основной код
  51. moscow = City(55.7522200, 37.6155600, 'Москва', 12615882)
  52. everest = Mountain(27.98791, 86.92529, 'Эверест', 8848)
  53. chelyabinsk = City(55.154, 61.4291, 'Челябинск', 1200703)
  54.  
  55. moscow.show()
  56. everest.show()
  57. print_how_far(moscow, everest)
  58. print_how_far(moscow, chelyabinsk)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement