def objectIdentifier(callingObject):
    """Returns a human-readable string identifier for a provided object.
    
    callingObject -- the object to be identified
    
    This method figures out the best name to use in identifying an object, taking queues from:
    - its _name_ attribute, if avaliable
    - more to be added as this evolves...
    
    Returns a string that can be used to identify the object to the user.
    """
    if hasattr(callingObject, '_name_'):    #object has a _name_ attribute
        name = getattr(callingObject, '_name_')
        if name:    #name is not False (or None)
            return name #just return the name
        else:   #name is False or None
            return callingObject.__class__.__name__ + " @ " + hex(id(callingObject)) #_name_ is None or False, return a reinterpretation of the str representation
    else:
        return callingObject.__class__.__name__ + " @ " + hex(id(callingObject))