title: Unable to load files using pickle and multiple modules
body: <p>I'm trying to create a user system, which uses a setting and Gui module, and when the GUI module requests for the file to load up using pickle, I keep getting an attribute error. this is from the settings module:</p>
  
  <pre><code>import pickle
  import hashlib
  
  class User(object):
      def __init__(self, fname, lname, dob, gender):
          self.firstname = fname
          self.lastname = lname
          self._dob = dob
          self.gender = gender
          self.type = 'General'
          self._username = ''
          self._hashkey = ''
  
      def Report(self):
          print("Full Name: {0} {1}\nDate of Birth: {2}\nGender: {3}\nAccess Level: {4}".format(self.firstname,self.lastname, self._dob, self.gender, self.type))
          print(self._username)
  
      def Genusername(self):
          self._username = str(str(self._dob)[:2] + self.firstname[:2] + self.lastname[:2])
          saveUsers(users)
  
      def Genhashkey(self, password):
          encoded = password.encode('utf-8','strict')
          return hashlib.sha256(encoded).hexdigest()
  
      def Verifypassword(self, password):
          if self._hashkey == self.Genhashkey(password):
              return True
          else:
              return False
  
  class SAdmin(User):
      def __init__(self, fname, lname, dob, gender):
          super().__init__(fname, lname, dob, gender)
          self.type = 'Stock Admin'
  
  class Manager(User):
      def __init__(self, fname, lname, dob, gender):
          super().__init__(fname, lname, dob, gender)
          self.type = 'Manager'
  
  def saveUsers(users):
      with open('user_data.pkl', 'wb') as file:
          pickle.dump(users, file, -1) # PICKLE HIGHEST LEVEL PROTOCOL
  
  def loadUsers(users):
      try:        
          with open('user_data.pkl', 'rb') as file:
              temp = pickle.load(file)
              for item in temp:
                  users.append(item)
      except IOError:
          saveUsers([])
  
  def userReport(users):
      for user in users:
          print(user.firstname, user.lastname)
  
  def addUser(users):
      fname = input('What is your First Name?\n &gt; ')
      lname = input('What is your Last Name?\n &gt; ')
      dob = int(input('Please enter your date of birth in the following format, example 12211996\n&gt; '))
      gender = input("What is your gender? 'M' or 'F'\n &gt;")
      level = input("Enter the access level given to this user 'G', 'A', 'M'\n &gt; ")
      password = input("Enter a password:\n &gt; ")
      if level == 'G':
          usertype = User
      if level == 'A':
          usertype = SAdmin
      if level == 'M':
          usertype = Manager
      users.append(usertype(fname, lname, dob, gender))
      user = users[len(users)-1]
      user.Genusername()
      user._hashkey = user.Genhashkey(password)
      saveUsers(users)
  
  def deleteUser(users):
      userReport(users)
      delete = input('Please type in the First Name of the user do you wish to delete:\n &gt; ')
      for user in users:
          if user.firstname == delete:
              users.remove(user)
      saveUsers(users)
  
  def changePass(users):
      userReport(users)
      change = input('Please type in the First Name of the user you wish to change the password for :\n &gt; ')
      for user in users:
          if user.firstname == change:
              oldpass = input('Please type in your old password:\n &gt; ')
              newpass = input('Please type in your new password:\n &gt; ')
              if user.Verifypassword(oldpass):
                  user._hashkey = user.Genhashkey(newpass)
                  saveUsers(users)
              else:
                  print('Your old password does not match!')
  
  def verifyUser(username, password):
      for user in users:
          if user._username == username and user.Verifypassword(password):
              return True
          else:
              return False  
  
  if __name__ == '__main__':
      users = []
      loadUsers(users)
  </code></pre>
  
  <p>and this is the GUI module:</p>
  
  <pre><code>from PyQt4 import QtGui, QtCore
  import Settings
  
  class loginWindow(QtGui.QDialog):    
      def __init__(self):
          super().__init__()        
          self.initUI()
  
      def initUI(self):
          self.lbl1 = QtGui.QLabel('Username')
          self.lbl2 = QtGui.QLabel('Password')
          self.username = QtGui.QLineEdit()
          self.password = QtGui.QLineEdit()
  
          self.okButton = QtGui.QPushButton("OK")
          self.okButton.clicked.connect(self.tryLogin)
          self.cancelButton = QtGui.QPushButton("Cancel")
  
          grid = QtGui.QGridLayout()
          grid.setSpacing(10)
  
          grid.addWidget(self.lbl1, 1, 0)
          grid.addWidget(self.username, 1, 1)
          grid.addWidget(self.lbl2, 2, 0)
          grid.addWidget(self.password, 2, 1)
          grid.addWidget(self.okButton, 3, 1)
          grid.addWidget(self.cancelButton, 3, 0)
  
          self.setLayout(grid)
  
          self.setGeometry(300, 300, 2950, 150)
          self.setWindowTitle('Login')
          self.show()
  
      def tryLogin(self):
          print(self.username.text(), self.password.text())
          if Settings.verifyUser(self.username.text(),self.password.text()):
              print('it Woks')
          else:
              QtGui.QMessageBox.warning(
                  self, 'Error', 'Incorrect Username or Password')
  
  class Window(QtGui.QMainWindow):
      def __init__(self):
          super().__init__()        
  
  
  if __name__ == '__main__':
  
      app = QtGui.QApplication(sys.argv)
      users = []
      Settings.loadUsers(users)
      if loginWindow().exec_() == QtGui.QDialog.Accepted:
          window = Window()
          window.show()
          sys.exit(app.exec_())
  </code></pre>
  
  <p>each user is a class and are put into a list and then the list is saved using pickle when I load up just the settings file and verify the login everything works fine but when I open up the GUI module and try to verify it doesn't let me, the error I'm getting:</p>
  
  <pre><code>Traceback (most recent call last):
    File "C:\Users`Program\LoginGUI.py", line 53, in &lt;module&gt;
      Settings.loadUsers(users)
    File "C:\Users\Program\Settings.py", line 51, in loadUsers
      temp = pickle.load(file)
  AttributeError: Can't get attribute 'Manager' on &lt;module '__main__' (built-in)&gt;
  </code></pre>