Abstract Classes in Python
An abstract class can be considered as a blueprint for other classes. It allows you to create a set of methods that must be created within any child classes built from the abstract class.
A class which contains one or more abstract methods is called an abstract class.
An abstract method is a method that has a declaration but does not have an implementation.
While we are designing large functional units we use an abstract class. When we want to provide a common interface for different implementations of a component, we use an abstract class.
Abstract Class Example:
from abc import *
class Demo:
@abstractmethod
def m1(self):
pass
The above example has one abstract method, so it is considered as abstract class.
The Abstract class concept can also be done in python by inheriting the base class ABC(Abstract Base Class):

from abc import *
class Student(ABC):
pass
stud1 = Student()
When an incomplete method is written in above code and when we try to create an instance of the class Student.We may face some errors.
for eg:
from abc import *
class Student(ABC):
@abstractmethod
def m1(self):
pass
stud1 = Student()
Output:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-28-57b67a37b54d> in <module>()
5 pass
6
----> 7 stud1 = Student()
TypeError:
Can't instantiate abstract class Student with
abstract methods m1
Whenever we inhereited ABC base class and leaving the incomplete
abstract method untouched it throws an error.
To over come this , We can directly use abstract method without
extending baseclass(example 1 below) or
we can use that abstract method in some other class(Example 2 below).
Example 1:
from abc import *
class Student():
@abstractmethod
def m1(self):
print('hi hello')
stud1 = Student()
Example 2:
from abc import *
class Student(ABC):
@abstractmethod
def m1(self):
pass
class A_student(Student):
def m1(self):
print("Student from A Section")
class B_student(Student):
def m1(self):
print("Student from B Section")
studA = A_student()
studB= B_student()
studA.m1() #Student from A Section
studB.m1() #Student from B Section
Comments
Post a Comment