title: Splitting python class into multiple files
body: <p>I wondered if anyone could tell me is it possible to divide the following code into two python classes which will then be placed in two different files:</p>
  
  <pre><code>from GUI import mainGUI
  from GUI import subwindowGUI
  
  class MyApp(QMainWindow, mainGUI.Ui_MainWindow):
      def __init__(self, parent=None):
          QMainWindow.__init__(self, parent)
          self.setupUi(self)
  
          # mainGUI contains QMdiarea in which it opens
          # a subwindow by calling a function MySubWin(self)
  
          # QMdiarea name is 'body'
  
          self.OpenSub.triggered.connect(self.MySubWin)
  
      def MySubWin(self):
          self.MySubWin = QWidget()
          self.MySubWin.setObjectName('Module window')
  
          self.myTabs = QtabWidget(self.MySubWin)
          self.myTabs.setObjectName('myTabs')
  
          # now I call the function that will display
          # the gui elements inside this 'Module window'
          self.create_module_gui()
  
          self.body.addSubWindow(self.MySubWin)
          self.MySubWin.showNormal()
  
      def create_module_gui(self, *args):
          module_gui = subwindowGUI.Ui_ModuleWindow()
          module_gui.setupUi(module_gui)
  
          self.myTabs.addTab(module_gui, _('New tab'))
          self.myTabs.setCurrentWidget(module_gui)
  </code></pre>
  
  <p>As you can see from the code above my functions are interacting with the main window gui elements. I wanted to move these functions that are related to this specific module into a separate file for the maintaining purposes. That's why I'm asking you to help me on how to achieve that if it's even possible. Thanks in advance, Tomislav.</p>
  
  <p>@Mel:</p>
  
  <p>If I for move those functions into another file:</p>
  
  <pre><code>myFunctions.py
  
  class MyFunctions(object):
  
      def MySubWin(self):
          self.MySubWin = QWidget()
          self.MySubWin.setObjectName('Module window')
  
          self.myTabs = QtabWidget(self.MySubWin)
          self.myTabs.setObjectName('myTabs')
  
          # now I call the function that will display
          # the gui elements inside this 'Module window'
          self.create_module_gui()
  
          self.body.addSubWindow(self.MySubWin)
          self.MySubWin.showNormal()
  
      def create_module_gui(self, *args):
          module_gui = subwindowGUI.Ui_ModuleWindow()
          module_gui.setupUi(module_gui)
  
          self.myTabs.addTab(module_gui, _('New tab'))
          self.myTabs.setCurrentWidget(module_gui)
  </code></pre>
  
  <p>and then I import that file into my main file.</p>
  
  <pre><code>import myFunctions
  
  class MyApp(QMainWindow, mainGUI.Ui_MainWindow):
      def __init__(self, parent=None):
          QMainWindow.__init__(self, parent)
          self.setupUi(self)
  
          # mainGUI contains QMdiarea in which it opens
          # a subwindow by calling a function MySubWin(self)
  
          # QMdiarea name is 'body'
  
          self.OpenSub.triggered.connect(MyFunctions.MySubWin)
  </code></pre>
  
  <p>What I end up with is the error saying that MyFunctions object has no attribute body.</p>