parameters: (object)
return_statement: return hasattr(tp, "__set__") and hasattr(tp, "__get__")
docstring: Return true if the object is a data descriptor.
  
      Data descriptors have both a __get__ and a __set__ attribute.  Examples are
      properties (defined in Python) and getsets and members (defined in C).
      Typically, data descriptors will also have __name__ and __doc__ attributes
      (properties, getsets, and members have both of these attributes), but this
      is not guaranteed.
docstring_summary: Return true if the object is a data descriptor.
docstring_tokens: Return true if the object is a data descriptor .
function: def isdatadescriptor(object):
      """Return true if the object is a data descriptor.
  
      Data descriptors have both a __get__ and a __set__ attribute.  Examples are
      properties (defined in Python) and getsets and members (defined in C).
      Typically, data descriptors will also have __name__ and __doc__ attributes
      (properties, getsets, and members have both of these attributes), but this
      is not guaranteed."""
      if isclass(object) or ismethod(object) or isfunction(object):
          # mutual exclusion
          return False
      tp = type(object)
      return hasattr(tp, "__set__") and hasattr(tp, "__get__")
function_tokens: def isdatadescriptor ( object ) : if isclass ( object ) or ismethod ( object ) or isfunction ( object ) : # mutual exclusion return False tp = type ( object ) return hasattr ( tp , "__set__" ) and hasattr ( tp , "__get__" )