We can define higher-order functions as instances of the
Callable
class. This builds on the idea of writing generator functions; we'll write callables because we need statement features of Python. In addition to using statements, we can also apply a static configuration when creating the higher-order function.
What's important about a Callable
class definition is that the class object, created by the class
statement, defines essentially a function that emits a function. Commonly, we'll use a callable
object to create a composite function that combines two other functions into something relatively complex.
To emphasize this, consider the following class:
from collections.abc import Callable class NullAware(Callable): def __init__(self, some_func): self.some_func= some_func def __call__(self, arg): return None if arg is None else self.some_func(arg)
This class creates a function named NullAware()
that is a higher-order function...