Advanced Python objects by Reuven M. Lerner