Actually, based on a little experimentation, it looks like it's the other way around, i.e., if '__iter__' exists, it uses that.  If not, it will use '__getitem__'.