关于python:geopy typeerror:geocode()缺少1个必需的位置参数:”query” geocode() missing 1 required positional argument: ‘query’

geopy TypeError : geocode() missing 1 required positional argument: 'query'

如果这是一个太基本的问题,我很抱歉,但是我无法理解地质调查局向我提出的一个简单错误。

1
2
3
4
5
6
7
8
9
In [78]: import geopy

In [79]: geopy.geocoders.Nominatim.geocode("Mumbai")
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-79-2465009b9d72> in <module>()
----> 1 geopy.geocoders.Nominatim.geocode("Mumbai")

TypeError: geocode() missing 1 required positional argument: 'query'

但是,以下是可行的,我不知道这两种方法有什么不同:

1
2
3
4
5
6
In [83]: from geopy.geocoders import Nominatim

In [84]: geolocator = Nominatim()

In [85]: geolocator.geocode("Mumbai")
Out[85]: Location(Mumbai, Greater Bombay, Maharashtra, India, (18.9321862, 72.8308337, 0.0))

据我所见,两者似乎是等效的。我错过了什么?


问题是,在第一种情况下,您不会创建Nominatum类的实例,并尝试用单个参数调用geocode()实例方法。由于没有实例,因此使用Mumbai作为self位置参数值,而不指定所需的query参数,因此出现了错误。

如果geocode()是一个"类方法"而不是一个"实例方法"(引用),这两个选项将是等效的。