differnce between class,__init__ and self