As in Python it is not necessary to create our code into classes while developing program as we can use functions also which is known as Procedural Programming. However, a procedural programming is used for writing small, short and simple programs whereas object oriented programming (OOP) programs becomes more important as the programs grows in size and complexity. The Python has been the object oriented language since it is developed.
So let’s have small introduction about object oriented programming concepts used-
In comparison to other programming languages, the concept of classes in Python is added with minimum of new syntax and semantics. The concept of classes in Python is a mixture of classes in C++ and Modula-3. The Python classes provide all the basic features of OOP such as class inheritance which allows multiple base classes, a derived class which can override any method of its base class and the method which can call the method of a base class with the same name.
First look at classes
In Python classes are introduced with new syntax and semantics.
Class definition syntax:
class ClassName: <statement 1> <statement 2> . . . <statement n>
Given below is the example of a simple Python class:-
class Student: //common base class for all students stuCount=0 def_init_(self, name, rollno): self.name = name self.rollno = rollno Student.stuCount += 1 def displayCount( self ): print “ The number of students are: %d ” % Student.stuCount def displayStudent( self ): print “Name : ” , self.name , “, Roll No : ” , self.rollno
In the above code the variable stuCount is a class variable whose value is shared among all instances of a student class. The variable can be accessed as Student.stuCount from inside the class or outside of the class. The first method init( ) is a special method which is called class constructor or the initialization method which is called when you create a new instance of the class. The self argument is added by the Python itself when the methods are called.
Objects are the basic building block of Python object oriented program.
stu1 = Student(“Raj” , 34) // first object of student class stu2 = Student(“Reema” , 12) //second object of student class
Attributes is the feature of an object. The _init_( ) method is used to initialize the attributes of an object. To access the object’s attributes we use the dot operator with the object. Like
stu1.displayStudent( ) stu2.displayStudent( ) print “The number of students are: %d ” % Student.stuCount
So the complete program is:
class Student: //common base class for all students stuCount=0 def_init_(self, name, rollno): self.name = name self.rollno = rollno Student.stuCount += 1 def displayCount( self ): print “ The number of students are: %d ” % Student.stuCount def displayStudent( self ): print “Name : ” , self.name , “, Roll No : ” , self.rollno stu1 = Student(“Raj” , 34) // first object of student class stu2 = Student(“Reema” , 12) //second object of student class stu1.displayStudent( ) stu2.displayStudent( ) print “The number of students are: %d ” % Student.stuCount
Inheritance another feature of an OOP in Python where it a way to build new classes from the existing classes and they are named as derived classes. The derived classes are derived or inherited from base classes. The main advantage of inheritance is that the code can be reused and the complexity of the program can be reduced. The derived classes extends the functionality of base class.
class Vehicle: // base class def _init_( self ): print “Calling vehicle class” def vehicle1( self ): print “Calling vehicle1 method” class Car(Vehicle): //derived class def _init_(self): print “Calling car class” def car1(self): print “Mercedes,BMW,” c= Car( ) //instance of car class c.car1( ) //calling derived class method c.vehicle1( ) //calling base class method
Calling car class Mercedes,BMW Calling vehicle class Calling vehicle1 method
The polymorphism is a process where a function is used in different ways for different inputs. Basically, polymorphism is if a class B is inherited from class A so it does not inheriting everything of class A it can inherit some of the functions of class A.
class Books: def _init_(self, name=‘ ’): self.name = name def programming(self): print “Programming books:” class Python(Books): def programming(self): print “In python world” class Java(Books): def programming(self): print “In java world” b = Books( ) b.programming( ) p = Python( ) p.programming( ) j = Java( ) j.programming( )
Programming books: In python world In java world
In Python classes can have the operations with the special method names but these methods cannot be called directly but by a specific syntax.
class Addition: def _init_(self,a,b): self.a = a self.b =b def _str_(self): return ‘Addition (%d, %d) ’ % (self.a, self.b) def _add_(self,other): return Addition(self.a + other.a, self.b + other.b) a1 = Addition(5,10) a2 = Addition(2,3) print a1 + a2