python类的组合应用

来源:互联网 发布:ax软件 编辑:程序博客网 时间:2024/06/05 00:47
class Employee:    def __init__(self,name,salary = 0):        self.name = name        self.salary = salary    def giveRaise(self,percent):        self.salary = self.salary + (self.salary * percent)    def work(self):        print self.name,' does stuff'    def __repr__(self):        return '<Employee: name = %s ,salary = %s>' % (self.name,self.salary)    class Chef(Employee):    def __init__(self,name):        Employee.__init__(self,name,50000)    def work(self):        print self.name,'makes food'class Server(Employee):    def __init__(self,name):        Employee.__init__(self,name,40000)    def work(self):        print self.name, ' interfaces with customer'class PizzaRobot(Chef):    def __init__(self,name):        Chef.__init__(self,name)    def work(self):        print self.name,' makes pizza'        class Customer:    def __init__(self,name):        self.name = name    def order(self,server):        print self.name,' order from ',server    def pay(self,server):        print self.name,' pays for item to ', serverclass Oven:    def bake(self):        print 'oven bakes'class PizzaShop:    def __init__(self):        self.server = Server('Pat')        self.chef = PizzaRobot('Bob')        self.oven = Oven()        def order(self,name):        customer = Customer(name)        customer.order(self.server)        self.chef.work()        self.oven.bake()        customer.pay(self.server)if __name__ == '__main__':    scene = PizzaShop()    scene.order('Homer')    print '...'    scene.order('Shaggy')

输出:

Homer  order from  <Employee: name = Pat ,salary = 40000>Bob  makes pizzaoven bakesHomer  pays for item to  <Employee: name = Pat ,salary = 40000>...Shaggy  order from  <Employee: name = Pat ,salary = 40000>Bob  makes pizzaoven bakesShaggy  pays for item to  <Employee: name = Pat ,salary = 40000>


原创粉丝点击