Learning Python design patterns - Zlobin, Gennadiy.