I thought __base__ and __bases__[0] where just equivalent, but it seems it is not so: >>> class C(object): pass ... >>> class M(C,type): pass ... >>> M.__bases__[0] <class '__main__.C'> >>> M.__base__ <type 'type'> Question: how __base__ is computed and what's the rationale about it ? TIA, Michele