title: How to access class within a method in Python
body: <p>I have a function <code>make_package</code> returning a class <code>Package</code>. In another file, I want to import class <code>Package</code>, so I can do type check. My question is, how to import a class that's inside a function?</p>
  
  <p>Following is not the exact code, but similar in structure.</p>
  
  <pre class="lang-py prettyprint-override"><code># project/package.py
  def make_package(ori, dest):
      class Package:
          origin = ori
          destination = dest
          def __init__(self, item):
              self.item = item
          def to_str(self):
              return self.origin + '-' + self.destination + ' : ' + self.item
      return Package
  
  # project/shipment.py
  # Don't know how to import Package from package.py
  class Shipment:
      def __init__(self, **kwargs):
          self.shipment = dict()
          for container in kwargs.keys():
              self.shipment[container] = list()
              for item in kwargs[key]:
                  if type(item) != Package:
                      raise TypeError('Item must be packed in Package.')
                  self.shipment[container].append(item.to_str())
  
  # project/main.py
  from .package import make_package
  from .shipment import Shipment
  us_fr = make_package('US', 'FR')
  fr_cn = make_package('FR', 'CN')
  shipment = Shipment(container1=[us_fr('item1'), fr_cn('item2')], container2=[us_fr('item3'), fr_cn('item4')])
  print(shipment.shipment)
  # {
  #     'container1' : [
  #         'US-FR : item1',
  #         'FR-CN' : 'item2'
  #     ],
  #     'container2' : [
  #         'US-FR : item3',
  #         'FR-CN' : 'item4'
  #     ]
  # }
  </code></pre>
  
  <p>I know one way I can achieve type check is make a <strong>dummy</strong> variable with <code>make_package</code> inside <code>Shipment</code>, then compare <code>type(item)</code> to <code>type(dummy)</code>. However it seems more like a hack. I wonder if there's a better way?</p>