#一种常用的编码模式是把对象彼此嵌套以组成复合对象
class Person:
def __init__(self, name, job=None, pay=0):self.name=name
self.job=job
self.pay=pay
def lastName(self):
return self.name.split()[-1]
def giveRaist(self, percent):
self.pay=int(self.pay*(1+percent))
def __str__(self):
return '[Person: %s, %s]'%(self.name, self.pay)
class Manager(Person):
def __init__(self, name, pay=0):
self.person=Person(name, 'mgr', pay)
def giveRaist(self, percent):
self.person.giveRaist(percent+1)
def __getattr__(self, attr):
return getattr(self.person, attr)
def __str__(self):
return 'sss'+str(self.person)
bob=Person('bob li', 'a')
sue=Person('sue zhang', 'b', 10000)
tom=Manager('tom zhao', 20000)
class Department:
def __init__(self, *args):
self.members=list(args)
def addMember(self, person):
self.members.append(person)
def giveRaist(self, percent):
for person in self.members:
person.giveRaist(percent)
def showAll(self):
for person in self.members:
print(person)
deve=Department(bob, sue)
deve.addMember(tom)
deve.giveRaist(1.1)
deve.showAll()
打印结果
[Person: bob li, 0]
[Person: sue zhang, 21000]
sss[Person: tom zhao, 62000]