title: Python abstract base classes
body: <p>As I dig further into Python internals, I start to see abc's more often in the documentation. Unfortunately the docs don't explain how they can be used. I haven't even been able to use the "concrete implementations" of these abstract base classes. </p>
  
  <p>For example, reading about class importlib.abc.SourceLoader, one learns that "is_package" is a concrete implementation of InspectLoader.is_package(). But what if I'd like to use that in my code? Is it possible? I've tried many ways but the method can't be imported. </p>
  
  <p>ExtensionFileLoader is documented as a concrete implementation of importlib.abc.ExecutionLoader, but if I try to use it (such as: from importlib import machinery.ExecutionLoader), once again it can't be found. </p>
  
  <p>If these methods can't be imported, why are they documented? is there any sample code to show how they can be used?   Example:  </p>
  
  <pre><code>import importlib.abc.SourceLoader     # doesn't work
  
  class try_pkg_check():
  
      def main(self, source_file_name):   
          possible_pkgs = ['math', 'numpy']           
          for posbl_pkg in possible_pkgs:         
              answer = SourceLoader.is_package(posbl_pkg)            
              print("For {}, the answer is: {}".format(posbl_pkg, answer))                
          return None         
  
  if __name__ == "__main__":    
      instantiated_obj = try_pkg_check()      
      instantiated_obj.main()
  </code></pre>
  
  <p>People might comment that I shouldn't try to import an abstract class. But "is_package" is documented as concrete, so I should be able to use it somehow, which is my question.</p>