class Observer(object):
def __init__(self,subject):
self.subject = subject
self.weather = self.subject.weather
self.subject.add_observer(self)
def update(self,weather,temperature,tips):
self.weather = weather
self.temperature = temperature
self.tips = tips
self.display()
def display(self):
return ("今日天氣:{} \n今日氣溫: {} \n今日建議:{}").format(self.weather,self.temperature,self.tips)
class Weather(object):
def __init__(self):
self.observers = []
self.weather = ""
self.temperature = ""
self.tips = ""
def add_observer(self,observer):
self.observers.append(observer)
def delete_observer(self,observer):
if observer in self.observers:
self.observers.remove(observer)
def notify(self):
for observer in self.observers:
observer.update(self.weather,self.temperature,self.tips)
def add_data(self,weather,temperature,tips):
self.weather = weather
self.temperature = temperature
self.tips = tips
self.notify()
if name=='main':
subject= Weather()
observer = Observer(subject)
subject.add_data('多云轉(zhuǎn)陰','10~23℃','請(qǐng)注意別感冒!')
subject.add_observer('張三')
subject.add_observer('李四')
subject.add_observer('Ben')
def Print():
ox = subject.observers
for o in ox:
weather_data = observer.display()
print("{}你好,以下是今日的天氣播報(bào):\n{}\n").format(o,weather_data)
Print()
初學(xué)Python,在做觀察者模式的時(shí)候發(fā)現(xiàn)print會(huì)打印出多余的東西
<main.Observer object at 0x0224F3B0>你好,以下是今日的天氣播報(bào):
今日天氣:多云轉(zhuǎn)陰
今日氣溫: 10~23℃
今日建議:請(qǐng)注意別感冒!
請(qǐng)問(wèn)這是什么原因,以及解決之道
2 回答

回首憶惘然
TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
在Class Observer的init函數(shù)中,self.subject.add_observer(self)語(yǔ)句將Weather的實(shí)例對(duì)象append到Weather的observers list里面了。
添加回答
舉報(bào)
0/150
提交
取消