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 Developer(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 Tester(Developer):
def __init__(self, name):
Developer.__init__(self, name)
def work(self):
print self.name, "makes pizza"
bob = Tester('bob')
print bob # Run inherited __repr__
bob.work( ) # Run type-specific action
bob.giveRaise(0.20) # Give bob a 20% raise
print bob; print
for klass in Employee, Developer, Server, Tester:
obj = klass(klass.__name__)
obj.work( )