Class Python

class FirstClass:                
     def setdata(self, value):   
         self.data = value        # self is the instance
     def display(self):
         print self.data          # self.data: per instance
class SecondClass(FirstClass):                     # inherits setdata
     def display(self):                            # changes display 
         print 'Current value = "%s"' % self.data
class ThirdClass(SecondClass):                 
     def __init__(self, value):                
         self.data = value
     def __add__(self, other):                 # on "self + other"
         return ThirdClass(self.data + other)
     def __mul__(self, other):
         self.data = self.data * other         # on "self * other" 
a = ThirdClass("abc")     # new __init__ called
a.display()               # inherited method
b = a + 'xyz'             # new __add__: makes a new instance
b.display()
a * 3                     # new __mul__: changes instance in-place
a.display()