Almost everwhere the descriptor protocol is mentioned, it specifies __get__(obj, typ=None). Why is a default value needed for the second argument? In which case does Python call a descriptor without a second argument? Thanks, Shalabh