@classmethod
def getattr(cls, obj, name, default=object):
    """
		Return the attribute ``name`` of the object :obj`obj` and honor
		``ul4getattr`` and ``ul4attrs``.
		"""
    ul4getattr = getattr(obj, 'ul4getattr', None)
    if ul4getattr is not None:
        try:
            return ul4getattr(name)
        except AttributeError:
            return cls.missing(obj, name, default)
    else:
        ul4attrs = getattr(obj, 'ul4attrs', None)
        if ul4attrs is not None and name in ul4attrs:
            return getattr(obj, name)
        elif name in cls.plainattrs:
            return getattr(obj, name)
        elif name in cls.wrappeddataattrs:
            return getattr(cls, name)(obj)
        elif name in cls.wrappedmethattrs:
            return cls.wrapmethod(obj, name)
        return cls.missing(obj, name, default)
