Adapter Design Pattern in Python
"""
Convert the interface of a class into another interface clients expect.
Adapter lets classes work together that couldn't otherwise because of
incompatible interfaces.
"""
import abc
class Target(metaclass=abc.ABCMeta):
    """
    Define the domain-specific interface that Client uses.
    """
    def __init__(self):
        self._adaptee = Adaptee()
    @abc.abstractmethod
    def request(self):
        pass
class Adapter(Target):
    """
    Adapt the interface of Adaptee to the Target interface.
    """
    def request(self):
        self._adaptee.specific_request()
class Adaptee:
    """
    Define an existing interface that needs adapting.
    """
    def specific_request(self):
        pass
def main():
    adapter = Adapter()
    adapter.request()
if __name__ == "__main__":
    main()
