Object-oriented Python by Reuven M. Lerner