code: def getter(self, name: str, rename: Optional[str] = None) -> 'ProxyAttr':
          
          if rename is None:
              rename = name
          if self.reuse_handle(name, rename, self._getter):
              return self
  
          def proxy_get(this: Any) -> None:
              """
              代理 getattr
              """
              proxy_target = getattr(this, self._target)
              return getattr(proxy_target, name)
  
          if name in self._setter:
              func = self._func_map[name]
              func = func.getter(proxy_get)
          else:
              func = property(proxy_get)
              self._func_map[name] = func
          setattr(self._proto, rename, func)
          self._getter[name] = {rename}
          return self
docs: 为类设置代理 getattr