I am looking for tips on improving my implementation of an OOP design problem in Python3 Here is the problem (paraphrasing to save space): There is a call center with three levels of employees - Respondent, Manager and Director. A call that goes to the center propagates as Respondent -> Manager -> Director depending on whether or not a) The respondent is free and can handle the callb) The manager is free and can handle the callThe call center needs to have a dispatchCall() method that assigns the call to the first available employeeHere is the code#! /usr/bin/env python3from abc import ABCMeta, abstractmethodfrom random import randomclass CallCenter():        A call center class that will be inherited from by the director    Attributes:        name: Name of the employee        number: Mobile phone number of the employee        level: Define level of the employee - respondent, manager or director        __metaclass__ = ABCMeta    def __init__(self, name, number, level):        self.name = name        self.number = number        self.level = level    def canEmployeeHandle(self):        canHandle = random()        if canHandle > 0.5:            return True        else:            return False    def isEmployeeBusy(self):        busy = True if random() <= 0.5 else False        return busy    @staticmethod    def dispatchCall():        return respondent.answerCall()    @abstractmethod    def answerCall(self):        Print a string indicating that this employee is currently        answering the call or propogate up the chain        passclass Director(CallCenter):        A class definition for the director who will be the third in chain    to answer the call        def answerCall(self):        print(The director is now on call with you)class Manager(Director):        A class definition for the manager who will be the second in chain to    answer the call        def answerCall(self):        if not self.isEmployeeBusy() and self.canEmployeeHandle():            print(The manager is answering your call)        else:            super(Manager, self).answerCall()class Respondent(Manager):    canHandle = random() #class variable to check if respondent can handle call        A class definition for the respondent who will be the first in chain    to answer the call        def answerCall(self):        if not self.isEmployeeBusy() and self.canEmployeeHandle():            print(The respondent is answering your call)        else:            super(Respondent, self).answerCall()if __name__ == __main__:    director = Director(Alex, +17654736791, director)    manager = Manager(Unai, +331577285782, manager)    respondent = Respondent(Mark, +16574872817, respondent)    CallCenter.dispatchCall()
Call center dispatch using object-oriented Python
python;object oriented