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

classObserver(object):
def__init__(self,subject):
self.subject=subject
self.weather=self.subject.weather
self.subject.add_observer(self)
defupdate(self,weather,temperature,tips):
self.weather=weather
self.temperature=temperature
self.tips=tips
self.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=weather
self.temperature=temperature
self.tips=tips
self.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.observers
foroinox:
weather_data=observer.display()
print("{}你好,以下是今日的天气播报:\n{}\n").format(o,weather_data)
Print()
初学Python,在做观察者模式的时候发现print会打印出多余的东西
你好,以下是今日的天气播报:
今日天气:多云转阴
今日气温:10~23℃
今日建议:请注意别感冒!
请问这是什么原因,以及解决之道
蝴蝶不菲
浏览 435回答 2
2回答

慕哥6287543

observer=Observer(subject)self.subject.add_observer(self)使得observer被添加到subject.observers中去print("{}你好,以下是今日的天气播报:\n{}\n").format(o,weather_data)o就是observer,printobserver所以会输出可以看一下“__str__”方法,可以修改printobserver时的返回值

白衣染霜花

在ClassObserver的init函数中,self.subject.add_observer(self)语句将Weather的实例对象append到Weather的observerslist里面了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript