<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def getdesc(self, actual=True):
 """Get the table description. By default it returns the actual description (thus telling the actual array shapes and data managers used). `actual=False` means that the original description as made by :func:`maketabdesc` is returned. """


        tabledesc = self._getdesc(actual, True)

        # Strip out 0 length "HCcoordnames" and "HCidnames"
        # as these aren't valid. (See tabledefinehypercolumn)
        hcdefs = tabledesc.get('_define_hypercolumn_', {})

        for c, hcdef in hcdefs.iteritems():
            if "HCcoordnames" in hcdef and len(hcdef["HCcoordnames"]) == 0:
                del hcdef["HCcoordnames"]
            if "HCidnames" in hcdef and len(hcdef["HCidnames"]) == 0:
                del hcdef["HCidnames"]

        return tabledesc