Сделайте geopy.Point более удобочитаемым

В настоящее время я работаю с пакетом geopy под Python 3.5. Я использую пакет geopy.Point. Я включил его в очень много файлов и никогда не было проблем. К сожалению, теперь у меня возникают проблемы с отладкой, так как точка __str__ Функция использует систему геодезических датумов в качестве выходных данных по умолчанию.

Я бы предпочел видеть только широту и долготу, если это возможно. Я не знаю, почему Geopy использует эту геодезическую систему, поэтому может случиться так, что я просто не получу от этого преимущества. Но, насколько я вижу, эта система не очень помогает при отладке. Так что теперь я ищу способ изменить __str__ функционировать очень элегантно. Какой самый питонный способ сделать это? Насколько я могу судить, написание обертки портит завершение кода.

Вот пример, чтобы объяснить, что я имею в виду:

from geopy.point import * #import the package

def str_p(point): #a function to get the format I actually can read
    return "Lat= "+str(point.latitude)+" | "+"Long= "+str(point.longitude) #always writing .latitude or .longitude when debugging is troublesome

p = Point(55, 17) #create a Point, note that we are using Lat, Lng
print(p) # 55 0m 0s N, 17 0m 0s E , a good format if you are manning a pirate ship. But confusing to me
print(str_p(p))# what I want

1 ответ

Это хакерство, это может быть не лучшим решением, но для целей отладки вы всегда можете выполнить monkey-patch:

In [1]: from geopy.point import Point

In [2]: old_str = Point.__str__

In [3]: Point.__str__ = lambda self:  "Lat= {} | Long= {}".format(self.latitude, self.longitude)

In [4]: p = Point(55, 17)

In [5]: print(p)
Lat= 55.0 | Long= 17.0

In [6]: Point.__str__ = old_str

In [7]: print(p)
55 0m 0s N, 17 0m 0s E
Другие вопросы по тегам