Book Image

Mastering Object-oriented Python

By : Steven F. Lott, Steven F. Lott
Book Image

Mastering Object-oriented Python

By: Steven F. Lott, Steven F. Lott

Overview of this book

Table of Contents (26 chapters)
Mastering Object-oriented Python
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Some Preliminaries
Index

Designing with ABC callables


There are two easy ways to create callable objects in Python, as follows:

  • Using the def statement to create a function

  • By creating an instance of a class that uses collections.abc.Callable as its base class

We can also assign a lambda form to a variable. A lambda is a small, anonymous function that consists of exactly one expression. We'd rather not emphasize saving lambdas in a variable as it leads to the confusing situation where we have a function-like callable that's not defined with a def statement. The following is a simple callable object that has been created from a class:

import collections.abc
class Power1( collections.abc.Callable ):
    def __call__( self, x, n ):
        p= 1
        for i in range(n):
            p *= x
        return p
pow1= Power1()

There are three parts to the preceding callable object, as follows:

  • We defined the class as a subclass of abc.Callable

  • We defined the __call__() method

  • We created an instance of the class, pow1()

Yes, the...