code: def keys(self):
          
          return sorted([k for k in dir(self) if
                         k[0:1] != '_' and k != 'keys' and not k.isupper() and
                         not inspect.ismethod(getattr(self, k)) and
                         not (hasattr(self.__class__, k) and
                              isinstance(getattr(self.__class__, k),
                                         property)) and
                         not isinstance(getattr(self, k), property)])
docs: Return a list of attribute names for the mapping.
  
          :rtype: list