本文整理汇总了Python中weather.Weather.__setattr__方法的典型用法代码示例。如果您正苦于以下问题:Python Weather.__setattr__方法的具体用法?Python Weather.__setattr__怎么用?Python Weather.__setattr__使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类weather.Weather
的用法示例。
在下文中一共展示了Weather.__setattr__方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: weather
# 需要导入模块: from weather import Weather [as 别名]
# 或者: from weather.Weather import __setattr__ [as 别名]
def weather(self, location, num_of_days=2, date='today'):
"""
Try to get forecast for given location.
Location pass one of the following:
City and Town name
Acceptable formats are:
City Name
City Name, State (US only)
City Name, State, Country
City Name, Country
e.g.: q=New+York or q=New+york,ny or q=London,united+kingdom
IP address
e.g.: q=101.25.32.325
UK or Canada Postal Code or US Zipcode
e.g.: q=SW1 or q=90201
Latitude,Longitude (in decimal degree)
e.g.: q=48.834,2.394
Return current condition as :class:`Weather` and forecast as list of :class:`Weather`
"""
path = 'weather'
if isinstance(location, City):
location = '{0},{1},{2}'.format(location.areaName, location.region, location.country)
response = self.__request(path, {
'q':location,
'num_of_days':num_of_days,
'format':self.format,
'date':date,
})
tree = ET.fromstring(response)
if tree.find('error'):
raise Exception(tree.find('error').find('msg').text)
condition = Condition()
for node in tree.find('current_condition').getchildren():
if node.tag == 'observation_time':
utcnow = datetime.utcnow()
source = '{0}-{1}-{2} '.format(
utcnow.year,
utcnow.month,
utcnow.day
) + node.text
date = datetime.strptime(source,'%Y-%m-%d %I:%M %p')
condition.__setattr__(node.tag, date)
continue
condition.__setattr__(node.tag, node.text)
forecast = list()
for node in tree.findall('weather'):
weather = Weather()
for child in node.getchildren():
if child.tag == 'date':
date = datetime.strptime(child.text,'%Y-%m-%d')
weather.__setattr__(child.tag, date)
continue
weather.__setattr__(child.tag, child.text)
forecast.append(weather)
return condition, forecast