code: def copy_attr(self, other):
          
          if not isinstance(other, Symbol):
              return  # Nothing done if not a Symbol object
  
          tmp = re.compile('__.*__')
          for attr in (x for x in dir(other) if not tmp.match(x)):
  
              if (
                  hasattr(self.__class__, attr) and
                  str(type(getattr(self.__class__, attr)) in ('property', 'function', 'instancemethod'))
              ):
                  continue
  
              val = getattr(other, attr)
              if isinstance(val, str) or str(val)[0] != '<':  # Not a value
                  setattr(self, attr, val)
docs: Copies all other attributes (not methods)
          from the other object to this instance.