Python不允许我调用方法

时间:2019-02-19 04:36:57

标签: python

我正在制作一个简单的python脚本,该脚本将要求一个邮政编码,并将实现该邮政编码的纬度和经度的天气返回到weather.gov url中,从而可以获取天气。我还是一个初学者,所以这可能是一个非常简单的修复。到目前为止,我将解释我的代码。我已经完成了Beautiful Soup的工作,这只是将邮政编码实现为lat和long。

这将导入搜索引擎:

from uszipcode import SearchEngine

这指定了简单的邮政编码:

search = SearchEngine(simple_zipcode=True)

这指定了相关的邮政编码:

zipcode = search.by_zipcode("11217")

这将获取邮政编码,获取其数据,将其转换成字典,然后将其存储到变量中:

latLong = zipcode.to_dict

这将从字典中获取经度和纬度并将其存储在变量中:

lat = latLong['lat']
long = latLong['long']

最后,这将lat和long放在了BeautifulSoup的url中,这很神奇:

my_url = 'https://forecast.weather.gov/MapClick.php?lat=' + lat + '&lon=' + long + '#.XGTPH1xKiUk'

如您所见,我正在使用uszipcode库。 (以下是链接:https://uszipcode.readthedocs.io/?badge=latest

需要注意的另一件事是,如果您调用latLong变量,将会得到以下结果:

<bound method ExtendedBase.to_dict of SimpleZipcode(zipcode='11217', zipcode_type='Standard', major_city='Brooklyn', post_office_city='Brooklyn, NY', common_city_list=['Brooklyn'], county='Kings County', state='NY', lat=40.68, lng=-73.98, timezone='Eastern', radius_in_miles=0.9090909090909091, area_code_list=['646', '718'], population=35881, population_density=47796.0, land_area_in_sqmi=0.75, water_area_in_sqmi=0.0, housing_units=17581, occupied_housing_units=16269, median_home_value=857000, median_household_income=81862, bounds_west=-73.990867, bounds_east=-73.97064, bounds_north=40.689901, bounds_south=40.672639)>

好吧,这是我的问题:每当我尝试调用字典中变量的方法/值(又名lat = latLong ['lat'])时,都会弹出此错误消息:

Traceback (most recent call last):
 File "c:\Users\bobko\Desktop\Hello\Test.py", line 8, in <module>
 lat = zipcode.to_dict['lat']
TypeError: 'method' object is not subscriptable

我不明白我在做什么错。有人可以帮忙吗? 附带说明:我还没有实现输入功能,我只是想看看它是否还能工作。

3 个答案:

答案 0 :(得分:2)

以下内容适用于我。  您必须通过添加括号来调用to_dict方法,并且该属性不是“ long”,而是“ lng”

from uszipcode import SearchEngine

search = SearchEngine(simple_zipcode=True)
zipcode = search.by_zipcode("11217")
latLong = zipcode.to_dict()
lat = latLong['lat']
long = latLong['lng']

答案 1 :(得分:1)

您应该通过在方法名称后面加上括号来调用该方法:

latLong = zipcode.to_dict()

否则,您仅将方法对象分配给latLong,因此会出现错误。

答案 2 :(得分:0)

zipcode.to_dict是一种方法。您必须调用它,即zipcode.to_dict()

在没有括号的情况下,您引用该方法,而不是调用该方法。