The Describe function returns a Describe object. The output of Describe is an object containing properties, such as data type, fields, indexes, and many others. Its properties are dynamic, meaning that depending on what data type is described, different describe properties will be available for use.
Describe properties are organized into a series of property groups. Any particular dataset will acquire the properties of at least one of these groups. For instance, if describing a geodatabase feature class, you could access properties from the GDB FeatureClass, FeatureClass, Table, and Dataset property groups. All data, regardless of the data type, will always acquire the generic Describe Object properties (baseName, catalogPath, children, childrenExpanded, dataType, extension, file, fullPropsRetrieved, metadataRetrieved, name, path).
Many data types include properties from other property groups. For instance, if describing a geodatabase feature class, you could access properties from the GDB FeatureClass, FeatureClass, Table and Dataset property groups.
In some cases the object returned by Describe will not have all of the properties that are documented for it. For example, the describe object for a Layer in ArcMap's table of contents will not have the layer property set. That property only exists if you describe a .lyr file.
If you try to access a property that a Describe object does not have, it will either throw an error or return an empty value (None, 0 or -1, empty string). If you are uncertain of a particular property, you can use Python's hasattr() function to check.
The specified data element or geoprocessing object to describe.
Returns an object with properties detailing the data element described. Some of the returned object's properties will contain literal values or objects.
The following stand-alone script displays some layer and describe object properties from a layer set by a script parameter. The parameter might get set to either a .lyr file or to a layer in ArcMap.
import arcpy # Get the layer as a parameter and describe it. # # The layer could be a layer in ArcMap (like "some_layer") # Or, it could be a .lyr file (like "C:/data/some.lyr") # layerString = arcpy.GetParameterAsText(0) desc = arcpy.Describe(layerString) # Print selected layer and describe object properties # print "Name:", desc.name if hasattr(desc, "layer"): print "Layer name:", desc.layer.name print "Layer data source:", desc.layer.catalogPath print ".lyr file:", desc.catalogPath else: print "Layer name:", desc.name print "Layer data source:", desc.catalogPath if desc.fidSet != '': print "Number of selected features:", str(len(desc.fidSet.split(";")))