2017-11-08 4 views
1

정확히 여기에 무엇이 잘못되었는지 약간 혼란 스럽습니다. 아래 오류에 대해 많은 질문을 보았지만 여전히 내 코드에 대한 올바른 대답을 찾을 수 없습니다. 나는 Python으로 수업을 시작하고 있는데, 나는 다른 종류의 API 데이터를 얻기 위해 5 가지 기능을 가지고있다.Python 클래스 - 필수 위치 인수

class Weather: 

    def __init__(self, R): 
     self.R = R = requests.get(
     "http://api.openweathermap.org/data/2.5/weather?q=" + CITY + "," + COUNTRY + "&appid=xxx") 

    def temp(self): 
     """Temp function with conversion to C degree""" 

     JSON_OBJECT = self.R.json() 
     TEMP_K = (JSON_OBJECT["main"]["temp"]) 
     TEMP_C = TEMP_K - 273.15 
     return (TEMP_C) 

아이디어는 반복을 피하기 위해 "변수"로 그 둘을 넣어하는 것입니다

requests.get(
    "http://api.openweathermap.org/data/2.5/weather?q=" + CITY + "," + COUNTRY + "&appid=xxx") 
JSON_OBJECT = self.R.json() 

내 오류가 다음과 같습니다

TypeError: temp() missing 1 required positional argument: 'self' 

이 오류가 나타납니다 라인은 다음과 같습니다

print("Current tempreture in {} is: {} C.".format(CITY, Weather.temp())) 
+0

힌트 : 실제로'날씨'클래스의 인스턴스를 만드는 것을 잊었습니다. – glibdud

답변

1

temp방법Weather 클래스로 정의했습니다.

Weather 클래스의 인스턴스에서 호출해야합니다.


이 경우에는 클래스를 전혀 사용하지 않을 것을 제안합니다.

일반적인 파이썬 wisdom은 두 가지 방법 중 하나가 __init__ 인 클래스가있는 경우 기본적으로 함수가 있음을 나타냅니다. 따라서 함수를 사용하십시오 :

import requests 

def get_weather_json(city, country): 
    R = requests.get("http://api.openweathermap.org/data/2.5/weather?q=" + city + "," + country + "&appid=xxx") 
    return R.json() 
+0

솔직히 말해서 나는 어떻게 시작 해야할지 생각이 부족합니다. 일반적으로 인스턴스가 무엇인지는 알고 있지만 너무 혼란 스럽습니다. 인터넷을 통해 수많은 정보가 있기 때문에 인스턴스 작업 방법을 설명하는 것은 분명하지 않지만이 지식을이 예제에 넣을 수는 없습니다 – michael93pl

+0

문제는 단지 코드 조각입니다. 내가 API 코드를 심판 할 때 나는 6 개의 다른 함수를 가지고있다. 그래서 여기에 클래스를 사용했다. – michael93pl

+0

날씨 클래스는 인스턴스화 될 때 API를 호출한다. 그것이 의미하는 것이라면, 그것은 단지 변장의 기능 일뿐입니다. API 호출의 결과를 저장하고 다시 사용하려면'get_weather_json'의 결과를 저장할 수 있습니다. –

관련 문제