Python Abstraction

Table Of Contents:

  1. What Is Abstraction?
  2. Need Of Abstraction?
  3. Implementing Abstraction In Python.
  4. Abstract Base Class.
  5. Abstract Class.
  6. Abstract Method.
  7. Concrete Methods In Abstract Base Class.
  8. Abstract Class Instantiation.

(1) What Is Abstraction?

  • Abstraction helps us to hide the internal implementation of the function from the users.
  • Hence the user can use that function without knowing the internal implementation.
  • User is familiar with that “what function does” but they don’t know “how it does.”

(2) Need Of Abstraction?

  • Abstraction provides a programmer to hide all the irrelevant data/processes of an application in order to reduce complexity and increase the efficiency of the program.
  • Abstraction helps us to provide security, by hiding internal sensitive data from users.
  • Abstraction enables users to use the functionality without any hassle.

(3) Implementing Abstraction In Python?

  • In Python abstraction can be achieved by using abstract class and abstract method.
  • Before that, we need to understand what is ‘Abstract Base Class’.?

Abstract Base Class:

  • In Python, we don’t have any keyword to indicate an abstract class.
  • Python comes with a module that provides the base for defining Abstract Base classes(ABC).
  • The module name is ‘ABC’.
  • The ‘ABC’ module implements abstraction by getting inherited in the base class and by decorating methods of the base class as abstract.

Syntax:

from abc import ABC  

class MyClass(ABC):

Abstract Class:

  • A class that consists of one or more abstract methods is called the abstract class.
  • Abstract methods do not contain their implementation. They are just empty functions.
  • The subclasses can inherit an abstract class and can define empty abstract methods.
  • We have to inherit the ‘abc’ module from Python to implement Abstraction.

Syntax:

from abc import ABC  

class MyClass(ABC):

Note:

  • Here ‘MyClass’ is the abstract class because it has inherited Python’s ‘ABC’ class.
  • It also has an abstract method ‘mymethod‘ , which doesn’t have any implementation.

Abstract Method:

  • A method becomes abstract when decorated with the keyword @abstractmethod.

Syntax:

from abc import ABC,abstractmethod 

class MyClass(ABC):
    @abstractmethod
    def mymethod(self):
        pass

Example:

from abc import ABC,abstractmethod 

class Bikes(ABC):
    @abstractmethod
    def milage(self):
        pass

class Honda(Bikes):
    def milage(self):
        print('Honda Milage = 50')

class Hero(Bikes):
    def milage(self):
        print('Hero Milage = 40')
        
class Suzuki(Bikes):
    def milage(self):
        print('Suzuki Milage = 30')

class SuperBike(Bikes):
    def milage(self):
        print('SuperBike Milage = 20')

Creating Objects Of The Class.

bike1 = Honda()
bike2 = Hero()
bike3 = Suzuki()
bike4 = SuperBike()

Calling The Abstract Method:

bike1.milage()
bike2.milage()
bike3.milage()
bike4.milage()

Output:

Honda Milage = 50
Hero Milage = 40
Suzuki Milage = 30
SuperBike Milage = 20

(4) Concrete Method In Abstract Base Class.

  • A Concrete Method is a method having a method body. That means it has the implementation part inside it.
  • Where as an Abstract Method doesn’t have any method body.
  • Concrete classes contain only concrete methods whereas abstract classes may contain both concrete methods and abstract methods.

Example:

from abc import ABC,abstractmethod 

class Mobile(ABC):
    def OS(self):
        print('Android OS')
        
class Samsung(Mobile):
    def OS(self):
        super().OS()
    def model(self):
        print('Samsung Mobile')
        
class OnePlus(Mobile):
    def OS(self):
        super().OS()
    def model(self):
        print('OnePlus Mobile')

class HTC(Mobile):
    def OS(self):
        super().OS()
    def model(self):
        print('HTC Mobile')

Creating Objects Of The Class.

mobile1 = Samsung()
mobile2 = OnePlus()
mobile3 = HTC()

Calling The Abstract Method:

mobile1.OS()
mobile1.model()
mobile2.OS()
mobile2.model()
mobile3.OS()
mobile3.model()

Output:

Android OS
Samsung Mobile
Android OS
OnePlus Mobile
Android OS
HTC Mobile

(5) Abstract Class Instantiation.

  • Abstract classes are the template for the other classes to use, it does not have any implementation on them.
  • Hence if you create an object of the abstract class, it will be of no use.
  • If you create an object of the Abstract Class it will through you an error, TypeError: Can’t instantiate abstract class

Example:

from abc import ABC,abstractmethod 

class Student(ABC):
    @abstractmethod
    def name(self):
        pass

Creating Objects Of The Class.

obj = Student()

Output:

TypeError                                 Traceback (most recent call last)
Input In [97], in <cell line: 1>()
----> 1 obj = Student()

TypeError: Can't instantiate abstract class Student with abstract method name

Leave a Reply

Your email address will not be published. Required fields are marked *