functionality (e.g. list.index()) but functions for other (e.g. len(list))? • The major reason is history. • Functions were used for those operations that were generic for a group of types and which were intended to work even for objects that didn’t have methods at all (e.g. tuples). It is also convenient to have a function that can readily be applied to an amorphous collection of objects when you use the functional features of Python (map(), apply() et al). • In fact, implementing len(), max(), min() as a built-in function is actually less code than implementing them as methods for each type. • It’s too late to make such fundamental changes now. The functions have to remain to avoid massive code breakage.