为了账号安全,请及时绑定邮箱和手机立即绑定

Python print 的时候出现<__main__.Observer object at 0x0224F3B0>

Python print 的时候出现<__main__.Observer object at 0x0224F3B0>

蝴蝶不菲 2019-04-21 20:38:48
classObserver(object):def__init__(self,subject):self.subject=subjectself.weather=self.subject.weatherself.subject.add_observer(self)defupdate(self,weather,temperature,tips):self.weather=weatherself.temperature=temperatureself.tips=tipsself.display()defdisplay(self):return("今日天气:{}\n今日气温:{}\n今日建议:{}").format(self.weather,self.temperature,self.tips)classWeather(object):def__init__(self):self.observers=[]self.weather=""self.temperature=""self.tips=""defadd_observer(self,observer):self.observers.append(observer)defdelete_observer(self,observer):ifobserverinself.observers:self.observers.remove(observer)defnotify(self):forobserverinself.observers:observer.update(self.weather,self.temperature,self.tips)defadd_data(self,weather,temperature,tips):self.weather=weatherself.temperature=temperatureself.tips=tipsself.notify()ifname=='main':subject=Weather()observer=Observer(subject)subject.add_data('多云转阴','10~23℃','请注意别感冒!')subject.add_observer('张三')subject.add_observer('李四')subject.add_observer('Ben')defPrint():ox=subject.observersforoinox:weather_data=observer.display()print("{}你好,以下是今日的天气播报:\n{}\n").format(o,weather_data)Print()初学Python,在做观察者模式的时候发现print会打印出多余的东西你好,以下是今日的天气播报:今日天气:多云转阴今日气温:10~23℃今日建议:请注意别感冒!请问这是什么原因,以及解决之道
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

observer=Observer(subject)
self.subject.add_observer(self)
使得observer被添加到subject.observers中去
print("{}你好,以下是今日的天气播报:\n{}\n").format(o,weather_data)
o就是observer,printobserver
所以会输出
可以看一下“__str__”方法,可以修改printobserver时的返回值
                            
查看完整回答
反对 回复 2019-04-21
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

在ClassObserver的init函数中,self.subject.add_observer(self)语句将Weather的实例对象append到Weather的observerslist里面了。
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 434 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号