employee __init__(selfname def work(self)print(self name"makes food"class server(employee)def __init__(selfname)employee __init__(selfname def work(self)print(self name"interfaces with customer"class pizzarobot(chef)def __init__(selfname)chef __init__(selfnamedef work(self)print(self name"makes pizza"if __name__ ="__main__"bob pizzarobot('bob'print(bobbob work(bob giveraise( print(bob)print(make robot named bob run inherited __repr__ run type-specific action give bob raise for klass in employeechefserverpizzarobotobj klass(klass __name__obj work(when we run the self-test code included in this modulewe create pizza-making robot named bobwhich inherits names from three classespizzarobotchefand employee for instanceprinting bob runs the employee __repr__ methodand giving bob raise invokes employee giveraise because that' where the inheritance search finds that methodc:\codepython employees py bob makes pizza employee does stuff chef makes food server interfaces with customer pizzarobot makes pizza in class hierarchy like thisyou can usually make instances of any of the classesnot just the ones at the bottom for instancethe for loop in this module' self-test code creates instances of all four classeseach responds differently when asked to work because the work method is different in each bob the robotfor examplegets work from the most specific ( lowestpizzarobot class of coursethese classes just simulate real-world objectswork prints message for the time beingbut it could be expanded to do real work later (see python' interfaces to designing with classes