'Return the default value if the requested data doesn\'t exist.
If `type` is provided and is a callable it should convert the value,
return it or raise a :exc:`ValueError` if that is not possible.  In
this case the function will return the default as if the value was not
found:
>>> d = Headers([(\'Content-Length\', \'42\')])
>>> d.get(\'Content-Length\', type=int)
42
If a headers object is bound you must not add unicode strings
because no encoding takes place.
.. versionadded:: 0.9
Added support for `as_bytes`.
:param key: The key to be looked up.
:param default: The default value to be returned if the key can\'t
be looked up.  If not further specified `None` is
returned.
:param type: A callable that is used to cast the value in the
:class:`Headers`.  If a :exc:`ValueError` is raised
by this callable the default value is returned.
:param as_bytes: return bytes instead of unicode strings.'

def get(self, key, default=None, type=None, as_bytes=False):

    try:
        rv = self.__getitem__(key, _get_mode=True)
    except KeyError:
        return default
    if as_bytes:
        rv = rv.encode('latin1')
    if (type is None):
        return rv
    try:
        return type(rv)
    except ValueError:
        return default
