Я создал класс BetterMarker
, который наследуется от folium.Marker
, который является географическим c точечным объектом, который можно добавить к объекту folium.Map
, который создает карту Leaflet HTML.
import folium, datetime
class BetterMarker(folium.Marker):
def __init__(self, latitude, longitude, **kwargs):
super().__init__([latitude, longitude], **kwargs)
self.latitude = latitude
def north_or_south(self):
if self.latitude > 0:
return "North"
else:
return "South"
Теперь я могу инициализировать BetterMarker
и добавить его экземпляр к folium.Map
объекту:
mymap = folium.Map() # Create Map object
bm = BetterMarker(30, 40, popup = "Hi there")
bm.add_to(mymap) # Add BetterMarker object to Map
mymap.save("mymap.html") # Save the map with the marker into HTML
Приведенный выше код прекрасно работает, создавая следующую карту:
Однако вместо использования строки Hi there
в bm = BetterMarker(30, 40, popup = "Hi there")
я хочу использовать bm.north_or_south()
:
bm = BetterMarker(30, 40, popup = bm.north_or_south())
Конечно, вышеприведенное т работа. Код ниже будет работать, но это означает, что класс нужно инициализировать два раза:
bm = BetterMarker(30, 40)
bm = BetterMarker(30, 40, popup = bm.north_or_south())
Что такое разумный способ сделать это? Что я сделал не так?