Demystifying Object-Oriented Programming (OOP) Concepts in Python

Nitesh Yadav
3 min readMay 30, 2023

--

Object-Oriented Programming (OOP) is a paradigm that allows developers to organize and structure their code by creating reusable objects with properties and behaviors. Python, being an object-oriented language, provides robust support for implementing OOP concepts. In this blog, we will explore the fundamental OOP concepts in Python, including classes, objects, inheritance, polymorphism, and encapsulation.

Classes and Objects:

A class is a blueprint or template for creating objects, while an object is an instance of a class. A class defines the attributes (data) and methods (functions) that the objects of that class will possess. Here’s an example:

class Car:
def __init__(self, make, model):
self.make = make
self.model = model

def start_engine(self):
print("Engine started!")

In the above example, Car is a class, and make and model are attributes. The start_engine method is a behavior associated with the Car class.

Inheritance:

Inheritance allows us to create a new class (derived class) that inherits properties and behaviors from an existing class (base class). The derived class can extend or modify the attributes and methods inherited from the base class. This helps in reusing code and promoting code organization. Consider the following example:

class ElectricCar(Car):
def __init__(self, make, model, battery_capacity):
super().__init__(make, model)
self.battery_capacity = battery_capacity

def charge_battery(self):
print("Battery charging...")

Here, ElectricCar is a derived class that inherits from the Car base class using the super() function. The derived class adds an additional attribute battery_capacity and a method charge_battery.

Polymorphism:

Polymorphism allows objects of different classes to be treated as if they belong to a common class. It enables us to write code that can work with objects of various types, providing flexibility and extensibility. Polymorphism is achieved through method overriding and method overloading. Let’s look at an example:

class Shape:
def area(self):
pass

class Rectangle(Shape):
def __init__(self, length, width):
self.length = length
self.width = width

def area(self):
return self.length * self.width

class Circle(Shape):
def __init__(self, radius):
self.radius = radius

def area(self):
return 3.14 * self.radius**2

In the above example, both Rectangle and Circle classes inherit from the base class Shape. Each class overrides the area method according to its specific implementation. Now, we can create objects of different types and call the area method on them, achieving polymorphic behavior.

Encapsulation:

Encapsulation is the practice of hiding internal details of an object and providing controlled access to its properties and methods. It helps in maintaining the integrity and security of the object. In Python, encapsulation is achieved by using private attributes and methods. Private attributes and methods are denoted by prefixing them with double underscores (__). Let's see an example:

class BankAccount:
def __init__(self, account_number, balance):
self.__account_number = account_number
self.__balance = balance

def deposit(self, amount):
self.__balance += amount

def withdraw(self, amount):
if amount <= self.__balance:
self.__balance -= amount
else:
print("Insufficient balance!")

def get_balance(self):
return self.__balance

In this example, the attributes __account_number and __balance are encapsulated, and they can only be accessed or modified through the methods provided by the class.

Conclusion:

Python’s support for object-oriented programming concepts makes it a powerful language for building scalable and modular applications. By understanding classes, objects, inheritance, polymorphism, and encapsulation, you can leverage the full potential of OOP in Python. These concepts promote code reusability, maintainability, and organization, ultimately leading to more efficient and robust software development.

Thanks for reading out, Please follow me to get notified with the amazing blogs, See you in the next story.

--

--

Nitesh Yadav

Just Started Development, Always curious and Always exploring