class_docstr: attr dict  
class_docstr_tok: ["attr","dict"]
docstr: set attr 
docstr_tok: ["set","attr"]
code: def __setattr__(self, name, value):
      """set attr"""
      if isinstance(value, (list, tuple)):
          value = [
              self.__class__(x) if isinstance(x, dict) else x
              for x in value
          ]
      elif isinstance(value, dict) and not isinstance(
          value, self.__class__
      ):
          value = self.__class__(value)
      super(AttrDict, self).__setattr__(name, value)
      super(AttrDict, self).__setitem__(name, value)
  
imports: import sys
  import datetime
  import os
  import yaml
  import random
  import shutil
  import six
  import warnings
  import glob
  from collections import defaultdict
  from pgl.utils.logger import log
label_desc: Use image node_id 2 for calling the AttrDict obj's underlying member method code with example usage: obj.__setattr__(name, value) without return types