Like other programming languages, Python is also an object-oriented language. It allows us to built applications using an Object-Oriented approach.
Principles of object-oriented programming system are given below:
Object:
A unique instance of a data structure that’s defined by its class that has state and behaviour. An object comprises both data members and methods.
Class:
A user-defined entity for an object that determines how an object will behave and what the object will contain. It is a set of attributes to build an object. The attributes class variables, instance variables and methods accessed via dot notation.
Example.
#Create a class class animal: name = 'cat'
#Create an object of class animal obj1 = animal() print(obj1.name) # Output: cat
The __init__() Function :
It is a built-in function in Python Class which is always executed when the Class is being initiated.
Use the __init__() function to assign values to object properties or other operations that are necessary to execute when the object is being constructed.
class animal: def __init__(self,name,age): self.name = name self.age = age #Create class object. obj1 = animal("dog",25) print("name of animal :",obj1.name) #Outout: name of animal : dog print("age of animal:",obj1.age) #Output: age of animal: 25
The self Parameter :
The self parameter is a reference to the current instance of the class. we can access the variables and methods of the class by using the “self” keyword in python. It has to be the first parameter of any function in the class.
Methods:
A method is a function that is defined in a class definition and associated with an object.
Example.
class animal: def __init__(self,name,age): self.name = name self.age = age def print_fn(self): print("Hello, I am a " + self.name) obj1 = animal("dog",25) obj1.print_fn()
#Output: Hello, I am a dog
Inheritance:
Inheritance is the most significant concept in object-oriented programming. It is a parent-child phenomenon. The child object can obtain all the properties and behaviours of the parent object. A class is called the derived class or child class which derived the properties and behaviour of another class. This another class whose properties are acquired is called the parent class or base class.
Example.
#Parent Class class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname)
let’s create a child class, which derived the functionality from a parent class. Set the parent class name as a parameter when creating child class.
#Child class class Student(Person): student_id = 25
Now, Student class can access all properties and methods of Person class.
x = Student("Johnathan", "Doq") x.printname() #Output: Johnathan Doq
The child class inherits all properties and method of parent class except __init__() function. The __init__() function of child class overrides the inheritance of the parent’s __init__() function.
To inherit the parent’s __init__() function, add a call to the parent’s __init__() function using super() function.
#Parent Class class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) #child class class Student(Person): def __init__(self, fname, lname,year): super().__init__(fname, lname) self.year = year def welcome(self): print("Welcome", self.firstname, self.lastname, "to the class of", self.year) x = Student("mark", "Doq",2019) x.welcome() #Output: Welcome mark Doq to the class of 2019
Note:
If a child class and parent class both have same name method, then the child class’s method override the parent class’s method.
Polymorphism:
Object-oriented programming allows you to implement multiple methods with the same name within the same class but has different sets of parameters. The operation performed varies by the object types or arguments of methods.
#Parent Class class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print("In Parent class: ",self.firstname, self.lastname) #child class class Student(Person): def __init__(self, fname, lname,year): super().__init__(fname, lname) self.year = year def printname(self): print("In Child class :", self.firstname, self.lastname, self.year) #Create object of child class x = Student("mark", "Doq",2019) x.printname() #Output: In Child class : mark Doq 2019