NameError:name' self'在尝试制作模块时未定义

时间:2017-09-06 16:31:52

标签: python

我有两个文件

check.py

import UrlParsing as owm

API_key = 'private_API_Key'

obj1 = owm.OWM(API_key)
cd = obj1.three_hours_forecast("London, uk")
print(cd)

UrlParsing.py

import urllib

class OWM(object):
    def __init__(self, API_key):
        self.API_key = API_key

    def three_hours_forecast(city, country):
        cty = city
        api_url = "http://api.openweathermap.org/data/2.5/forecast?q={},{}&mode=json&units=metric&APPID={}".format(cty, country, self.API_key)
        data_dictionary = get_dict(api_url)
        return data_dictionary

    def get_dict(self, api_url):
        url = urllib.urlopen(api_url)
        output_data = url.read().decode('utf-8')
        data_dict = json.loads(output_data)
        url.close()
        print(data_dict)
        return data_dict

我正在尝试创建一个UrlParsing模块,以便我可以在我的主程序中使用它。有人可以告诉我这个程序有什么问题。我得到了NameError:name' self'没有定义。

我做错了什么?你能告诉我如何纠正它吗?我试着对同样的问题进行一些跟进,但我没有运气。我感谢任何帮助。

错误跟踪此行

        api_url = "http://api.openweathermap.org/data/2.5/forecast?q={},{}&mode=json&units=metric&APPID={}".format(cty, country, self.API_key)

1 个答案:

答案 0 :(得分:4)

你可以尝试

<强> check.py

cd = obj1.three_hours_forecast("London", "uk")

<强> UrlParsing.py

def three_hours_forecast(self, city, country):
        cty = city
        api_url = "http://api.openweathermap.org/data/2.5/forecast?q={},{}&mode=json&units=metric&APPID={}".format(cty, country, self.API_key)
        data_dictionary = get_dict(api_url)
        return data_dictionary

我希望这对你有所帮助。