我是python的新手,需要帮助来获取json文件并合并 将其放入要在整个类中使用的 init 中,但是下面出现了错误,我不明白为什么。我之前有一个构建类,看起来好像是一样的。
AttributeError: 'dict' object has no attribute 'zipcode'
我有一个名为config.json
的单独的json文件,我在其中更改了一些信息(即位置和api键),但是除此之外,这就是我正在使用的文件。
config.json:
{
"unit_system":"metric",
"location_information":{
"country_code":"US",
"country_name":"United States",
"city":"New York City",
"state":"New York",
"postal":10001
},
"api_keys":{
"weather_api_key":"97a484e1039b7a0779b59f2e57e597a3"
}
}
weather.py
class weather:
"""weather retrieving app"""
def __init__(self, data):
"""initialize attributes for weather app"""
self.unit_system = data['unit_system']
#unit system
self.country_code = data['location_information']['country_code']
self.zipcode = data['location_information']['postal']
#location information
self.api_key = data['api_keys']['weather_api_key']
#api key informaation
def get_update(self):
threading.Timer(5.0, w.get_update).start()
#runs get_update every 5 seconds
#get weather information
weather_url = 'http://api.openweathermap.org/data/2.5/weather?zip=' \
+ str(self.zipcode) + ',' \
+ self.country_code + '&appid=' \
+ self.api_key
weather_request = requests.get(weather_url)
weather_data = weather_request.json()
temp_k = float(weather_data['main']['temp'])
#determine unit system conversions
if self.unit_system == 'english':
temp = (temp_k - 273.15) * 1.8 + 32
elif self.unit_system == 'metric':
temp = temp_k - 273.15
print(temp)
#return(temp)
import threading
import requests
import json
with open('config.json') as config_file:
config = json.load(config_file)
w = weather(config)
w.get_update()
答案 0 :(得分:0)
删除最后一行并将这些行放在底部。第一行创建一个名为weather_obj的天气类的实例。然后,您可以使用weather_obj
调用get_update。weather_obj = weather(config)
weather_obj.get_update()
答案 1 :(得分:0)
您提供的密码似乎有效。 a screenshot of my output(s)