Directly from the documentation:
This method can be overridden by a metaclass to customize the method resolution order for its instances. It is called at class instantiation, and its result is stored in _mro_.
So, mro()
is called on instantiation and caches its result in __mro__
. They have the same purpose.