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

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

如果这是一个太基本的问题,我很抱歉,但是我无法理解 geopy 向我抛出的一个简单错误。

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'

但是,以下方法有效,我不明白这两种方法有何不同:

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 class 的实例并尝试使用单个参数调用 geocode() instance method。由于没有实例,Mumbai 用作 self 位置参数值,未指定所需的 query 参数 - 因此出现错误。

如果 geocode() 是 "class method" 而不是 "instance method" (reference),那么这两个选项是等价的。