In this tutorial, we will discuss Python Object Oriented Programming concept and learn its fundamentals.
What are OOPs in Python?
As we know python is a high-level programming language with multi-paradigm, here Object-Oriented Programming is one of those paradigms. Object-oriented programming is a programming technique that most of the high-level programming language support in this we use class and object to make a program . An Object has two characteristics:
- Attribute
- Behaviours
Here attributes are the variable and behaviour can be taken as the function of those variables.
Let’s understand it with an example
Consider a Car as an Object So, its color, brand name, considered as its attributes Where the gear mechanism and speed would be considered as its behaviour.
OOP’s Properties
- Inheritance
When we use the properties of one class in another class.
- Encapsulation
All the code is inside a Class block.
- Polymorphism
Operators performing different operations on different data types
Two Main Component of OPP’s
- Class
- Object
Class
A class is a Keyword which is used to make the blueprint of an Object. A class has no existence until its object gets created.
Class Syntax
class Class_Name: #class body which includes its properties
Example:
class Car:
car_colour = "blue"
car_brand = "BMW"
Object
The object of a class is also known as the instance of the class. When we create an object of the class the class come in existence, and with the help of object, we can access the properties of the class. A class has many objects.
Object creation syntax
obj_name = Class_name()
Example
Suppose Bob and Sam has same car, and if we represent it with OOP’s concept the car would be a class and Bob and Sam will be Objects.
class Car:
car_colour = "blue" #Class attributes
car_brand = "BMW" #class attributes
bob = Car() # Bob is an object here
sam = Car() # Sam is the another object of Car
print("the brand of Bob's car is:",bob.car_brand)
print("the Colour of Sam car is:", sam.car_colour)
# Output
the brand of Bob's car is: BMW
the Colour of Sam car is: blue
Behind the code
Here in the above code, we made two objects ( sam and bob ) of the same class ( Car ), and we have used the car attributes outside the Class block using its object and dot operator.
Class Methods:
Functions inside a Class know as class methods. There are two types of Class methods user-defined methods and magical methods. The python magical methods also are known as under these methods contain double underscores (__) before and after the method name.
Example:
class Car:
def __init__(self,car_brand,car_colour): #Class megical method and class Constructor
self.car_colour =car_colour
self.car_brand = car_brand
def car_details(self): #Class method
print("The car brand is", self.car_brand, "and it",self.car_colour, "in colour")
bob = Car("BMW", "Blue")
sam = Car("Ferrari", "Red")
bob.car_details() #Calling class method using object
sam.car_details()
#Output
The car brand is BMW and it Blue in colour
The car brand is Ferrari and it Red in colour
Python Object-Oriented Programming Properties:
1. Inheritance
Inheritance is one of the most important properties of OPP’s concept and it used more often as compared to other OOP’s properties. In inheritance, we can use the properties ( Attributes and Method) of one class in another. The main motto of inheritance is the reusability, code written in one class can be used in another. Inheritance has two components: base class and derived class. The Base class also known as Parent class and the derived also know as child class. The derived class inherit the properties from the base class.
Syntax
class base_class:
# Base Class block
class derived_class (base_class): # here derived class inherit base class
#base class block
Example:
class Mammals:
def __init__(self):
print("Mammals Class has been created")
def type(self):
print("It is a Mammals")
class Dog(Mammals):
def __init__(self):
print('dog class has been created')
bob_pet = Dog() #When we create class object it invoke __init__ method
bob_pet.type() # Here we call Mammals method using Dog object.
#Output:
dog class has been created
It is a Mammals
2. Encapsulation
Encapsulation deal with data hiding from an Object. In python class, we use single or double underscore before the attributes name to tell the object that particular attribute is private for class only and object not supposed to access those attributes directly.
Example:
class make():
def __init__(self):
self.item = 200
self.__item = 200 #Private member
def itemsvalue(self):
print("Total no. of __items",self.__item)
print("Total no. of items",self.item)
m= make()
m.itemsvalue()
print("-----------change the value of item and __item using object--------- ")
m.item = 300
m.__item = 300
m.itemsvalue()
#Output:
Total no. of __items 200
Total no. of items 200
-----------change the value of item and __item using object---------
Total no. of __items 200
Total no. of items 300
3. Polymorphism
With polymorphism, we can have the same method name for different classes. Polymorphism applies on operators too for example if we use + operator between two integers it will add both integers, but if we use the same + operator between two string it will concatenate them.
Example:
class Cat:
def eat(self):
print("cat eat fish")
def swim(self):
print("Cat can't swim")
class Dog:
def eat(self):
print("Dog Food, Meat")
def swim(self):
print("Dogs can swim")
james_pet = Dog()
sofi_pet = Cat()
james_pet.swim()
sofi_pet.swim()
#Output:
Dogs can swim
Cat can't swim
Some Advantages of OOPs:
- OOPs provide a modular way to complete the project
- It increases the code reusability
- Give more data security.