code: def explain(self, *args, **kwargs):
          '''Return a string that describes how these args are interpreted'''
          args = self.get(*args, **kwargs)
          results = ['%s = %s' % (name, value) for name, value in args.required]
          results.extend(['%s = %s (overridden)' % (
              name, value) for name, value in args.overridden])
          results.extend(['%s = %s (default)' % (
              name, value) for name, value in args.defaulted])
          if self._varargs:
              results.append('%s = %s' % (self._varargs, args.varargs))
          if self._kwargs:
              results.append('%s = %s' % (self._kwargs, args.kwargs))
          return '\n\t'.join(resultsf explain(self, *args, **kwargs):
          '''Return a string that describes how these args are interpreted'''
          args = self.get(*args, **kwargs)
          results = ['%s = %s' % (name, value) for name, value in args.required]
          results.extend(['%s = %s (overridden)' % (
              name, value) for name, value in args.overridden])
          results.extend(['%s = %s (default)' % (
              name, value) for name, value in args.defaulted])
          if self._varargs:
              results.append('%s = %s' % (self._varargs, args.varargs))
          if self._kwargs:
              results.append('%s = %s' % (self._kwargs, args.kwargs))
          return '\n\t'.join(results)
docs: Return a string that describes how these args are interpreted