(continued from previous page @property method-name should be same as attribute 'radiushere def radius(self)return self _radius _radius can be changed with other name return self diameter/ _radius can be changed with other name @radius setter def radius(selfval)'valshould be float or int if not isinstance(val(floatint))raise typeerror("expectedfloat or int"self _radius float(valself diameter float(val multiple constructor below constructor is added for the 'research organizationwho are doing their work based on diameters@classmethod def diameter_init(clsdiameter)radius diameter/ change diameter to radius return cls(radiusreturn radius @staticmethod meter to centimeter conversion def meter_cm(meter)return( *meter def cost(self)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(lets check the output of this file firstwhich is working fine as below note that the dictionarynow contains the 'diameterinstead of 'radius @property