classes now we can call an instance of the class barometric just as any other python function baro barometric( baro( #same as baro __call__( the instance baro now behaves and looks like function the method is exactly the same as the value methodbut creating special method by renaming it to __call__ produces nicer syntax when the class is used special method for printing we are used to printing an object using print( )which works fine for python' built-in object types such as strings and lists howeverif is an instance of class we defined ourselveswe do not obtain much useful informationsince python does not know what information to show we can solve this problem by defining special method named __str__ in our class the __str__ method must return string objectpreferably string that provides useful information about the objectand it should not take any arguments except self for the function class seen abovea suitable __str__ method could look like the followingclass barometricdef __call__(selfh)return self exp(-self *self * /(self *self )def __str__(self)return ' exp(- * * /( * )) {self }if we now call print for an instance of the classthe function expression and the value of for that instance will be printedas followsb barometric( ( print(bp exp(- * * /( * )) special methods for mathematical operations so far we have seen three special methodsnamely__init____call__and __str__but there are many more we will not cover them all in this bookbut few are worth mentioning for instancethere are special methods for arithmetic operationssuch as __add____sub____mul__and so forth defining these methods inside our class will enable us to perform operations such as +bwhere , are instances of the class the following are relevant arithmetic operations and the corresponding special method that they will callc __add__(bc __sub__(bc * __mul__(