Object models

Every Python object carries attributes that no source code declares: a module has __name__, a function has __defaults__, a class has __mro__. An object model supplies those attributes for one kind of object, so that looking them up infers a value instead of failing.