Interfaces in Python
An abstract class and interface appear similar in Python. The only difference in two is that the abstract class may have some non-abstract methods, while all methods in interface must be abstract, and the implementing class must override all the abstract methods.
Rules for implementing Python Interfaces
We need to consider the following points while creating and implementing interfaces in Python
Methods defined inside an interface must be abstract.
Creating object of an interface is not allowed.
A class implementing an interface needs to define all the methods of that interface.
Creating object of an interface is not allowed.
A class implementing an interface needs to define all the methods of that interface.
In case, a class is not implementing all the methods defined inside the interface, the class must be declared abstract.
Ways to implement Interfaces in Python
We can create and implement interfaces in two ways −
Formal Interface
Informal Interface
Informal Interface
Formal Interface
Formal interfaces in Python are implemented using abstract base class (ABC). To use this class, you need to import it from the abc module.
Example
In this example, we are creating a formal interface with two abstract methods.
from abc import ABC, abstractmethod
# creating interface
class demoInterface(ABC):
@abstractmethod
def method1(self):
print ("Abstract method1")
return
@abstractmethod
def method2(self):
print ("Abstract method1")
return
# class implementing the above interface
class concreteclass(demoInterface):
def method1(self):
print ("This is method1")
return
def method2(self):
print ("This is method2")
return
# creating instance
obj = concreteclass()
# method call
obj.method1()
obj.method2()
Output
When you execute this code, it will produce the following output −
This is method1
This is method2
In Python, the informal interface refers to a class with methods that can be overridden. However, the compiler cannot strictly enforce the implementation of all the provided methods.
Example:
class demoInterface:
def displayMsg(self):
pass
class newClass(demoInterface):
def displayMsg(self):
print ("This is my message")
# creating instance
obj = newClass()
# method call
obj.displayMsg()
Output
On running the above code, it will produce the following output
This is my message
Comments
Post a Comment