<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def getname(exprresolver):
 """Get expression resolver name. Expression resolver name is given by the attribute __resolver__. If not exist, then the it is given by the attribute __name__. Otherwise, given by the __class__.__name__ attribute. :raises: TypeError if exprresolver is not callable."""


    result = None

    if not callable(exprresolver):
        raise TypeError('Expression resolver must be a callable object.')

    result = getattr(
        exprresolver, __RESOLVER__, getattr(
            exprresolver, '__name__', getattr(
                exprresolver.__class__, '__name__'
            )
        )
    )

    return result