code: def define_properties(obj, props):
      
      cls = obj.__class__
      dct = {
          '__doc__': cls.__doc__
      }
  
      for name, defn in list(props.items()):
          if is_callable(defn):
              defn = property(defn)
          elif not hasattr(defn, '__get__'):
              defn = property(*defn)
          dct[name] = defn
  
      obj.__class__ = type(cls.__name__, (cls, ), dct)
docs: Defines multiple @properties dynamically for an instance rather than a class.