def is_numeric(obj):
    """
    Returns true if `obj` is a numerical object.

    Args:
        obj (object): the object to check

    Returns:
        bool: True if the object is numerical, otherwise False.

    >>> is_numeric(100)
    True
    >>> is_numeric(0.5)
    True
    >>> is_numeric("hallo")
    False
    >>> is_numeric({1: 'a', 2: 'b'})
    False
    >>> is_numeric([1, 2, 3, 4])
    False
    >>> is_numeric({1, 2, 3, 4})
    False
    """
    # http://stackoverflow.com/a/500908
    attrs = ['__add__', '__sub__', '__mul__', '__truediv__', '__pow__']
    return all(hasattr(obj, attr) for attr in attrs)