어떻게 교체 가능한 대상과 교체기 대상을 실현합니까 (2)

1409 단어
이전에 우리는 교체 가능한 대상과 교체기 대상을 소개했는데, 지금은 이 두 대상을 실현하여 실제 사례의 수요를 만족시키고 해결 방안은 다음과 같다.
4
  • 교체기 대상인 Weather Iterator를 실현하고next 방법은 매번 한 도시의 기온으로 돌아간다

  • 4
  • 교체 가능한 대상 WeatherIterable 구현,iter__방법은 교체기 대상을 되돌려줍니다

  • 코드는 다음과 같습니다.
    # -*- coding: utf-8 -*-
    
    import requests
    from collections import Iterable, Iterator
    
    #           
    class WeatherIterator(Iterator):
        
        def __init__(self, cities):
            self.cities = cities
            self.index = 0
    
    
        def getWeather(self, city):
            r = requests.get(u'http://wthrcdn.etouch.cn/weather_mini?city=' + city)
            data = r.json()['data']['forecast'][0]
            return '%s: %s, %s' % (city, data['low'], data['high'])
    
        def next(self):
            if self.index == len(self.cities):
                raise StopIteration
            city = self.cities[self.index]
            self.index += 1
            return self.getWeather(city)
    
    #           
    class WeatherIterable(Iterable):
    
        def __init__(self, cities):
            self.cities = cities
    
        def __iter__(self):
            return WeatherIterator(self.cities)
    
    if __name__ == "__main__":
        
        for x in WeatherIterable([u'  ', u'  ', u'  ', u'  ']):
            print x
    

    실행 결과는 다음과 같습니다.
      :    23℃,    29℃
      :    30℃,    40℃
      :    27℃,    33℃
      :    26℃,    31℃
    

    좋은 웹페이지 즐겨찾기