""" Record and process information about people. Run this file directly to test its classes. """ from classtools import AttrDisplay # Use generic display tool class Person(AttrDisplay): # Mix in a repr at this level """ Create and process person records """ def __init__(self, name, job=None, pay=0): self.name = name self.job = job self.pay = pay def lastName(self): # Assumes last is last return self.name.split()[-1] def giveRaise(self, percent): # Percent must be 0..1 self.pay = int(self.pay * (1 + percent)) class Manager(Person): """ A customized Person with special requirements """ def __init__(self, name, pay): Person.__init__(self, name, 'mgr', pay) # Job name is implied def giveRaise(self, percent, bonus=.10): Person.giveRaise(self, percent + bonus) if __name__ == '__main__': bob = Person('Bob Smith') sue = Person('Sue Jones', job='dev', pay=100000) print(bob) print(sue) print(bob.lastName(), sue.lastName()) sue.giveRaise(.10) print(sue) pat = Manager('Pat Jones', 50000) pat.giveRaise(.10) print(pat.lastName()) print(pat)