figure an instance of the fraction class underscores before and after initand is shown in listing listing fraction class and its constructor class fractiondef __init__(self,top,bottom)self num top self den bottom notice that the formal parameter list contains three items (selftopbottomself is special parameter that will always be used as reference back to the object itself it must always be the first formal parameterhoweverit will never be given an actual parameter value upon invocation as described earlierfractions require two pieces of state datathe numerator and the denominator the notation self num in the constructor defines the fraction object to have an internal data object called num as part of its state likewiseself den creates the denominator the values of the two formal parameters are initially assigned to the stateallowing the new fraction object to know its starting value to create an instance of the fraction classwe must invoke the constructor this happens by using the name of the class and passing actual values for the necessary state (note that we never directly invoke __init__for examplemy_fraction fraction( , creates an object called my_fraction representing the fraction (three-fifthsfigure shows this object as it is now implemented the next thing we need to do is implement the behavior that the abstract data type requires to beginconsider what happens when we try to print fraction object my_f fraction( print(my_f review of basic python