Как можно поменять текстовое сообщение "Enter the latitude <__main__.Distance object at 0x0000024CA74041A0> point:" на "Enter the latitude A point:", при использовании выражения f'Enter the latitude {self} point:' для запроса ввода широты от пользователя в данной программе на Python?
1. Чтобы вывести имя атрибута объекта в виде строки в Python, можно воспользоваться функцией `vars()` или `dir()` в сочетании с циклом `for`. Например: ```python class MyClass: def __init__(self): self.attribute = 42 obj = MyClass() for attr in vars(obj): print(attr) ``` 2. Чтобы заменить текстовое сообщение на "Enter the latitude A point:", можно переопределить метод `__str__` в классе `Distance` и использовать его для получения строки, которая будет представлять объект `Distance` в нужном формате. Например: ```python class Distance: def __str__(self): return "A" def get_latitude(self): latitude = input(f'Enter the latitude {self} point:') return latitude distance_obj = Distance() latitude = distance_obj.get_latitude() ``` Таким образом, при вызове метода `get_latitude()` будет выводиться сообщение "Enter the latitude A point:".
Здравствуйте!
Предлагаю добавить дополнительный атрибут name в инициализации.
Получится такой код:
import math class Distance: def __init__(self, lat=0, long=0, name="test"): self.lat = lat self.long = long self.name = name def rad(self): self.lat = math.radians(float(input(f"Enter the latitude {self.name} point: "))) self.long = math.radians( float(input(f"Enter the longitude {self.name} point: ")) ) return self def dist(A, B): return 6371.01 * math.acos( math.sin(A.lat) * math.sin(B.lat) + math.cos(A.lat) * math.cos(B.lat) * math.cos(A.long - B.long) ) A = Distance(name="A").rad() B = Distance(name="B").rad() print(dist(A, B))