class Person:
def __init__(self,name,job=None,pay=0):
self.name = name
self.job = job
self.pay = pay
def getname(self):
return self.name.split()[-1]
def giveraise(self,percent):
self.pay = round(self.pay * percent,2)
def __repr__(self):
return "[Person:{},{}]".format(self.name,self.pay)
class Manager:
def __init__(self,name,pay):
self.person = Person(name,"mgr",pay)
def giveraise(self,percent,bonus=.10):
self.person.giveraise(percent+bonus)
def __getattr__(self, attr):
return getattr(self.person,attr)
def __repr__(self):
return str(self.person)
Manager类中构造函数下的 self.person = Person(name,"mgr",pay) 中Person(name,"mgr",pay)是什么意思
self.person.giveraise(percent+bonus)又是什么意思
Person(name,"mgr",pay)就是就是创建一个Person()对象,给它传3个参数:name、job(设置默认值为"mgr")和pay。self.person.giveraise(percent+bonus)这里调用的是Person()对象的giveraise()方法,传的参数值是percent与bonus相加之后的值。大概就是这个意思。你可以调用这些方法运行一下看看效果。
if __name__ == '__main__':
person = Person('李白', '诗人', 300)
person.getname()
person.giveraise(0.5)
manager = Manager('张三', 180)
manager.giveraise(0.4)
print(person)
print(manager)
# [Person:李白,150.0]
# [Person:张三,90.0]