Data Abstraction in Python¶
Overview¶
Data abstraction is the concept of hiding implementation details and exposing only the essential features of an object or data structure. It helps reduce complexity and improves code organization.
Key Principles¶
Encapsulation¶
Encapsulation bundles data and methods that operate on that data into a single unit.
Prevents direct modification of data
Encourages controlled access through methods
Example:
class BankAccount:
def __init__(self, balance):
self._balance = balance # "protected" attribute
def deposit(self, amount):
self._balance += amount
def get_balance(self):
return self._balance
Information Hiding¶
Internal details are hidden from the user.
Use naming conventions: -
_variable(protected) -__variable(private, name mangling)
Example:
class Example:
def __init__(self):
self.__hidden = 10
def get_value(self):
return self.__hidden
Abstraction with Classes¶
Classes provide a way to define abstract data types.
Focus on what an object does, not how it does it
Methods define the interface
Example:
class Car:
def start(self):
print("Car started")
Abstract Base Classes (ABC)¶
Python supports abstraction using abstract base classes via the abc module.
Cannot instantiate abstract classes directly
Require subclasses to implement abstract methods
Example:
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Square(Shape):
def __init__(self, side):
self.side = side
def area(self):
return self.side * self.side
Benefits of Data Abstraction¶
Reduces complexity
Improves code readability
Enhances maintainability
Promotes code reuse
Protects data integrity
Summary¶
Data abstraction in Python allows developers to:
Hide implementation details
Expose clear interfaces
Build modular and reusable code
Common techniques include encapsulation, naming conventions, and abstract base classes.