code: def private_props(obj):
      
      # Get private properties but NOT magic methods
      props = [item for item in dir(obj)]
      priv_props = [_PRIVATE_PROP_REGEXP.match(item) for item in props]
      call_props = [callable(getattr(obj, item)) for item in props]
      iobj = zip(props, priv_props, call_props)
      for obj_name in [prop for prop, priv, call in iobj if priv and (not call)]:
          yield obj_name
docs: Yield private properties of an object.
  
      A private property is defined as one that has a single underscore
      (:code:`_`) before its name
  
      :param obj: Object
      :type  obj: object
  
      :returns: iterator