@property nowwe will see the usage of @property in python managing attributes currentlywe are not checking the correct types of inputs in our design let' see our 'pythonic pyfile again from pythonic import ring( radius radius "meher radius 'mehermehernote that in the above codethe string is saved in the radiusand the multiplication is performed on the string we do not want this behaviortherefore we need to perform some checks before saving data in the dictionarywhich can be done using @propertyas shown belowimportant@property decorator allows operator to call the function hereself radius will call the method radiuswhich returns the self _radius hence_radius is stored in the dictionary instead of dict if we use 'return self radiusinstead of 'return self _radius'then the @property will result in infinite loop as self property will call the property methodwhich will return self propertywhich results in calling the @property again furtherwe can use @property for type checkingvalidation or performing various operations by writing codes in the setter method change the date to todays date etc pythonic py import math import time class ring(object)""here we will see the actual logic behind various pieces of python language instancesvariablesmethod and @property etc alsowe will see the combine usage of these pieces to complete design with agile methodology "" class variables date time strftime("% -% -% "time gmtime()today' date "yyyy-mm-ddcenter center of the ring def __init__(selfdate=datemetal="copper"radius= price= quantity= )""init is not the constructorbut the initializer which initialize the instance variable self is the instance __init__ takes the instance 'selfand populates it with the radiusmetaldate etc and store in dictionary self radiusself metal etc are the instance variable which must be unique (continues on next page @property