(continued from previous page #class declaration class jungle#constructor with default values def __init__(selfname="unknown")self visitorname name def welcomemessage(self)print("hello % welcome to the jungleself visitorname class ratejungledef __init__(selffeedback)feedback ( - is the best self feedback feedback public attribute public attribute with single underscore sign single signifies that author does not want to acecess it directly self _staffrating self __jungleguiderating private attribute self updatestaffrating(update staff rating based on feedback self updateguiderating(update guide rating based on feedback def printrating(self)print("feedback % \tguide rating% \tstaff rating% (self feedbackself __jungleguideratingself _staffrating) def updatestaffrating(self)""update staff rating based on visitor feedback""if self feedback self _staffrating + elseself _staffrating - def updateguiderating(self)""update guide rating based on visitor feedback""if self feedback self __jungleguiderating + elseself __jungleguiderating - listing accessing public and private attributes #main py import class 'jungleand 'ratejunglefrom junglebook py from junglebook import jungleratejungle def main()#create object of class jungle jungle("meher" welcomemessage(hello meherwelcome to the jungle ratejungle( printrating(feedback guide rating staff rating _staffrating can be accessed "directly"but not good practice use the method which is provided by the author below is the bad practice _staffrating directly change the _staffrating print("staff rating " _staffratingstaff rating (continues on next page object oriented programming