Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
70 views

Abstract Method

The document discusses abstract classes in Python. An abstract class can be considered as a blueprint for other classes and allows defining methods that must be implemented in child classes. The document explains how to define and use abstract classes and methods in Python using the ABC module.

Uploaded by

Richmond koomson
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
70 views

Abstract Method

The document discusses abstract classes in Python. An abstract class can be considered as a blueprint for other classes and allows defining methods that must be implemented in child classes. The document explains how to define and use abstract classes and methods in Python using the ABC module.

Uploaded by

Richmond koomson
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

GEEKSFORGEEKS

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 di!erent
implementations of a component, we use an abstract class. 
  
Why use Abstract Base Classes : 
By defining an abstract base class, you can define a common Application Program
Interface(API) for a set of subclasses. This capability is especially useful in
situations where a third-party is going to provide implementations, such as with
plugins, but can also help you when working in a large team or with a large code-
base where keeping all classes in your mind is di#cult or not possible. 
  
How Abstract Base classes work : 
By default, Python does not provide abstract classes. Python comes with a module
that provides the base for defining Abstract Base classes(ABC) and that module
name is ABC. ABC works by decorating methods of the base class as abstract and
then registering concrete classes as implementations of the abstract base. A
method becomes abstract when decorated with the keyword @abstractmethod.
For Example –
 

Code 1:

Python3
:
# Python program showing
# abstract base class work

from abc import ABC, abstractmethod

class Polygon(ABC):

@abstractmethod
def noofsides(self):
pass

class Triangle(Polygon):

# overriding abstract method


def noofsides(self):
print("I have 3 sides")

class Pentagon(Polygon):

# overriding abstract method


def noofsides(self):
print("I have 5 sides")

class Hexagon(Polygon):

# overriding abstract method


def noofsides(self):
print("I have 6 sides")

class Quadrilateral(Polygon):

# overriding abstract method


def noofsides(self):
print("I have 4 sides")
# Driver code
R = Triangle()
R.noofsides()

K = Quadrilateral()
K.noofsides()

R = Pentagon()
R.noofsides()
:
K = Hexagon()
K.noofsides()

Output: 
 

I have 3 sides

I have 4 sides

I have 5 sides

I have 6 sides

  
Code 2: 

VHDL for Professionals


VHDL Extension for VS Code
VHDL for Professionals: Sophisticated VHDL
extension for Visual Studio Code

vide-so<ware.at

OPEN

Python3

# Python program showing


# abstract base class work

from abc import ABC, abstractmethod


:
class Animal(ABC):

def move(self):
pass

class Human(Animal):

def move(self):
print("I can walk and run")

class Snake(Animal):

def move(self):
print("I can crawl")

class Dog(Animal):

def move(self):
print("I can bark")

class Lion(Animal):

def move(self):
print("I can roar")

# Driver code
R = Human()
R.move()

K = Snake()
K.move()

R = Dog()
R.move()

K = Lion()
K.move()

Output: 
 

I can walk and run

I can crawl
:
I can bark

I can roar

  
Implementation Through Subclassing : 
By subclassing directly from the base, we can avoid the need to register the class
explicitly. In this case, the Python class management is used to recognize
PluginImplementation as implementing the abstract PluginBase. 
 

Python3

# Python program showing


# implementation of abstract
# class through subclassing

import abc

class parent:
def geeks(self):
pass

class child(parent):
def geeks(self):
print("child class")
# Driver code
print( issubclass(child, parent))
print( isinstance(child(), parent))

Output: 
 

True

True
:
A side-e!ect of using direct subclassing is, it is possible to find all the
implementations of your plugin by asking the base class for the list of known
classes derived from it. 
  
Concrete Methods in Abstract Base Classes : 
Concrete classes contain only concrete (normal)methods whereas abstract classes
may contain both concrete methods and abstract methods. The concrete class
provides an implementation of abstract methods, the abstract base class can also
provide an implementation by invoking the methods via super(). 
 

Let look over the example to invoke the method using super():  

Python3

# Python program invoking a


# method using super()

import abc
from abc import ABC, abstractmethod

class R(ABC):
def rk(self):
print("Abstract Base Class")

class K(R):
def rk(self):
super().rk()
print("subclass ")
# Driver code
r = K()
r.rk()

Output: 
 
:
Abstract Base Class

subclass

In the above program, we can invoke the methods in abstract classes by using
super(). 
  
Abstract Properties : 
Abstract classes include attributes in addition to methods, you can require the
attributes in concrete classes by defining them with @abstractproperty. 
 
:
Python3

# Python program showing


# abstract properties

import abc
from abc import ABC, abstractmethod

class parent(ABC):
@abc.abstractproperty
def geeks(self):
return "parent class"
class child(parent):

@property
def geeks(self):
return "child class"

try:
r =parent()
print( r.geeks)
except Exception as err:
print (err)

r = child()
print (r.geeks)

Output: 
 

Can't instantiate abstract class parent with abstract methods geeks

child class
:
In the above example, the Base class cannot be instantiated because it has only an
abstract version of the property getter method. 
  
Abstract Class Instantiation : 
Abstract classes are incomplete because they have methods that have nobody. If
python allows creating an object for abstract classes then using that object if
anyone calls the abstract method, but there is no actual implementation to invoke.
So we use an abstract class as a template and according to the need, we extend it
and build on it before we can use it. Due to the fact, an abstract class is not a
concrete class, it cannot be instantiated. When we create an object for the abstract
class it raises an error. 
 
:
Python3

# Python program showing


# abstract class cannot
# be an instantiation
from abc import ABC,abstractmethod

class Animal(ABC):
@abstractmethod
def move(self):
pass
class Human(Animal):
def move(self):
print("I can walk and run")

class Snake(Animal):
def move(self):
print("I can crawl")

class Dog(Animal):
def move(self):
print("I can bark")

class Lion(Animal):
def move(self):
print("I can roar")

c=Animal()

Output: 
 

Traceback (most recent call last):

File "/home/ffe4267d930f204512b7f501bb1bc489.py", line 19, in

c=Animal()

TypeError: Can't instantiate abstract class Animal with abstract methods move
:
 

Article Tags : Python python-oop-concepts

Recommended Articles
1. Abstract Factory Method - Python Design Patterns
2. Abstract Base Class (abc) in Python
3. Implementing Web Crawler using Abstract Factory Design Pattern in Python
4. PyQt5 QCalendarWidget - Setting Border to the Abstract View
5. PyQt5 QCalendarWidget - Background Color to the Abstract View
6. How to create Abstract Model Class in Django?
7. Data Classes in Python | An Introduction
8. Data Classes in Python | Set 2 (Decorator Parameters)
9. Data Classes in Python | Set 3 (dataclass fields)
10. Data Classes in Python | Set 5 (post-init)
11. Data Classes in Python | Set 6 (interconversion to and from other datatypes)
12. How to Dynamically Load Modules or Classes in Python
13. Create Classes Dynamically in Python
14. The Ultimate Guide to Data Classes in Python 3.7
15. Data Classes in Python | Set 4 (Inheritance)
16. Python Classes and Objects
17. How to Handle Imbalanced Classes in Machine Learning
18. Create a Scatter Plot using Sepal length and Petal_width to Separate the Species
Classes Using scikit-learn
19. Important di!erences between Python 2.x and Python 3.x with examples
20. Python | Merge Python key values to list
21. Reading Python File-Like Objects from C | Python
22. Python | Add Logging to a Python Script
23. Python | Add Logging to Python Libraries
:
24. JavaScript vs Python : Can Python Overtop JavaScript by 2020?
25. Python | Visualizing O(n) using Python

Read Full Article

A-143, 9th Floor, Sovereign Corporate Tower,


Sector- 136, Noida, Uttar Pradesh (201305)
feedback@geeksforgeeks.org

Company

About Us
Careers
In Media
Contact Us
Privacy Policy
Copyright Policy
Advertise with us
:
Learn

DSA
Algorithms
Data Structures
SDE Cheat Sheet
Machine Learning
CS Subjects
Video Tutorials
Courses

NEWS

Top News
Technology
Work & Career
Business
Finance
Lifestyle
Knowledge
:
Knowledge

Languages
Python
Java
CPP
Golang
C#
SQL
Kotlin

Web Development
Web Tutorials
Django Tutorial
HTML
JavaScript
Bootstrap
ReactJs
NodeJs

Contribute
Write an Article
Improve an Article
Pick Topics to Write
Write Interview Experience
Internships
Video Internship
:
@geeksforgeeks, Some rights reserved
:

You might also like