class_docstr: Base ClassyModel wrapper class.
  
  This class acts as a thin pass through wrapper which lets users modify the behavior
  of ClassyModels, such as changing the return output of the forward() call.
  This wrapper acts as a ClassyModel by itself and the underlying model can be
  accessed by the `classy_model` attribute.
class_docstr_tok: ["Base","ClassyModel","wrapper","class",".","This","class","acts","as","a","thin","pass","through","wrapper","which","lets","users","modify","the","behavior","of","ClassyModels",",","such","as","changing","the","return","output","of","the","forward","(",")","call",".","This","wrapper","acts","as","a","ClassyModel","by","itself","and","the","underlying","model","can","be","accessed","by","the","`","classy_model","`","attribute","."]
code: def __getattr__(self, name):
      if name != "classy_model" and hasattr(self, "classy_model"):
          attr = getattr(self.classy_model, name)
          if isinstance(attr, types.MethodType):
              attr = _ClassyModelMethod(self, attr)
          return attr
      else:
          return super().__getattr__(name)
  
imports: import copy
  import types
  from typing import Any, Dict, List, Optional, Tuple
  import torch
  import torch.nn
  from classy_vision.generic.util import log_class_usage
  from classy_vision.heads.classy_head import ClassyHead
  from .classy_block import ClassyBlock
label_desc: Use image node_id 2 for calling the ClassyModelWrapper obj's underlying member method code with example usage: obj.__getattr__(name) and returns: attr, super