def __getattr__(self, name):
        # Now that we've intercepted __getattr__, we can't access our own
        # attributes directly. Use __getattribute__ to access them.
        obj = self.__getattribute__('_wrapped')
        exceptions = self.__getattribute__('_exceptions')
        if (obj is None) or (name in exceptions):
            self.__getattribute__(name)

        else:
            try:
                attr = getattr(obj, name)
                if isinstance(obj, MethodType):
                    return new.instancemethod(attr.im_func, self, obj.__class__)
                else:
                    return attr
            except __HOLE__:
                # Recast error message as being from this class.
                raise AttributeError("'%s' object has no attribute '%s'" %
                                     (self.__class__.__name__, name))
dataset/ETHPy150Open AppScale/appscale/AppServer/lib/grizzled/grizzled/proxy.py/Forwarder.__getattr__