Learning Python design patterns. (2016)