I know that __call__ method in a class is triggered when the instance of a class is called. However, I have no idea when I can use this special method, because
IMHO __call__ method and closures give us a natural way to create STRATEGY design pattern in Python. We define a family of algorithms, encapsulate each one, make them interchangeable and in the end we can execute a common set of steps and, for example, calculate a hash for a file.