(continued from previous page return self price self quantity def area(self)return math pi self radius** self perimeter(wrong way to calculate perimeter self _perimeter(use local copy of perimeter( math pireturn math pi ** def perimeter(self)return math pi self radius local copy can be created in the lines after the actual method _perimeter perimeter make local copy of perimeter def main()print("center of the ring is at:"ring centermodify class variable ring(price= modify only price print("radius:{ }cost:{ }format( radiusr cost())print("radius:{ }perimeter:{ : }format( radiusr perimeter()) print(check the new constructor 'diameter_initd ring diameter_init(diameter= print("radius:{ }perimeter:{ : }area:{ : }formatd radiusd perimeter() area())print("radius:{ }perimeter:{ : }format( radiusd perimeter()) meter print("{ meter { centimeterformat(md meter_cm( )) if __name__ ='__main__'main(below is the result for above listingpython pythonic py radius: perimeter: area: nowwe will get the correct results for the 'box pyas wellas shown belowfrom box import box diameter_init( radius perimeter(doubled value of perimeter (desired area(desired area private attributes are not for privatizing the attributes in section we saw that there is no concept of data-hiding in pythonand the attributes can be directly accessed by the the clients notethere is misconception that the double underscore ('__'are used for data hiding in python in this sectionwe will see the correct usage of '__in python private attributes are not for privatizing the attributes