class Secretary():
def __init__(self):
self.people = []
self.action = ""
def addPeople(self, people):
self.people.append(people)
def Notify(self):
for i, v in enumerate(self.people):
v.Updata()
def SecretaryAction(self, actiom):
self.action = actiom
class StockObserver():
def __init__(self, name, sub):
self.name = name
self.sub = sub
def Updata(self):
print "%s,%s,关闭股票行情,继续工作" % (self.sub.action, self.name)
if __name__ == '__main__':
secretary = Secretary()
stockobserver1 = StockObserver("小王", secretary)
stockobserver2 = StockObserver("小李", secretary)
secretary.addPeople(stockobserver1)
secretary.addPeople(stockobserver2)
secretary.SecretaryAction("老板回来了!")
secretary.Notify()
from abc import ABCMeta, abstractmethod
class Observer():
__metaclass__ = ABCMeta
def __init__(self, name, sub):
self.__name = name
self.__sub = sub
@abstractmethod
def Update(self):
pass
class NBAObserver(Observer):
def __init__(self, name, sub):
self.name = name
self.sub = sub
def Update(self):
print "%s,%s,关闭NBA直播,继续工作" % (self.sub.action, self.name)
class StockObserver2(Observer):
def __init__(self, name, sub):
self.name = name
self.sub = sub
def Update(self):
print "%s,%s,关闭股票行情,继续工作" % (self.sub.action, self.name)
class Secretary2():
def __init__(self):
self.people = []
self.action = ""
def addPeople(self, people):
self.people.append(people)
def delPeople(self, people):
del self.people[people]
def Notify(self):
for i, v in enumerate(self.people):
v.Update()
def SecretaryAction(self, actiom):
self.action = actiom
if __name__ == '__main__':
secretary2 = Secretary2()
nbaobserver1 = NBAObserver("小N",secretary2)
stockobserver2 = StockObserver2("小古",secretary2)
secretary2.addPeople(nbaobserver1)
secretary2.addPeople(stockobserver2)
secretary2.SecretaryAction("胡汉三来了")
secretary2.Notify()
pass
from abc import ABCMeta, abstractmethod
class Subject3():
__metaclass__ = ABCMeta
def __init__(self):
self.peopleList = []
self.subjectStatce = ""
@abstractmethod
def addPeople(self):
pass
@abstractmethod
def delPeople(self):
pass
@abstractmethod
def Notify(self):
pass
@abstractmethod
def subjecStatce(self):
pass
class Obsevice3():
__metaclass__ = ABCMeta
def __init__(self, name, sub):
self.name = name
self.sub = sub
@abstractmethod
def Update(self):
pass
class stickObserver3(Obsevice3):
def Update(self):
print "%s,%s,关闭股票行情,继续工作" % (self.sub.subjectStatce, self.name)
class NBAObserver3(Obsevice3):
def Update(self):
print "%s,%s,关闭NBA直播,继续工作" % (self.sub.subjectStatce, self.name)
class Boss3(Subject3):
def addPeople(self, people):
self.peopleList.append(people)
def delPeople(self, people):
self.delPeople(people)
def Notify(self):
for i, v in enumerate(self.peopleList):
v.Update()
def subjecStatce(self, subjectStatce):
self.subjectStatce = subjectStatce
if __name__ == '__main__':
Boss3 = Boss3()
stockobserver1 = stickObserver3("小王", Boss3)
nbaobserver2 = NBAObserver3("小N", Boss3)
Boss3.addPeople(stockobserver1)
Boss3.addPeople(nbaobserver2)
Boss3.subjecStatce("我胡汉三来了!!!")
Boss3.Notify()
class A:
def f_one(self, x):
print"here is f_one"
print"x=",x
print"-"*100
def f_two(self):
print"here is f_two"
print"-"*100
class B(A):
def __init__(self):
self._a = A()
def f_three(self):
pass
def __getattr__(self, name):
return getattr(self._a, name)
if __name__ == '__main__':
b_test=B()
x=6
b_test.f_one(x)
b_test.f_two()