code: def getPublicAttrs(obj):
      'Return all public attributes (not methods or `_`-prefixed) on object.'
      return [k for k in dir(obj) if not k.startswith('_') and not callable(getattr(obj, k))f getPublicAttrs(obj):
      'Return all public attributes (not methods or `_`-prefixed) on object.'
      return [k for k in dir(obj) if not k.startswith('_') and not callable(getattr(obj, k))]
docs: Return all public attributes (not methods or `_`-prefixed) on object.