I am having a problem with how to share a class instance between modules. Below is not the actual code, it is a simplified representation of what I'm trying to do. The variable in question is thePlot. If I make it a global, I get 'global name not defined' type errors. If I don't use a global, then the 'draw' method in the shapes modules can't find it.
I get errors when the draw() method is called and it tries to execute the 'thePlot' method 'plot'.
* Main module *****************
import matplotlib as plt
import plotter
import shapes
main():
    thePlot = plotter.plotter()
    cyl = shapes.cylinder(r, c, n, color)
    cyl.draw()
    plt.show()
* shapes module *******************
import main
import plotter
class shapes(self):
    def __init__(self):
        pass
    def cylinder(r, c, n, color):
    self.r = r
    self.c = c
    self.n = n
    self.color = color
def draw(self):
    self.x = calculate list of x coordinates
    self.y = calculate list of y coordinates
    self.z = calculate list of z coordinates
    global thePlot
    * This line causes the error
    thePlot.plot(self.x, self.y, self.z, self.color)
* plotter module ******************
import matplotlib as plt
class plotter(self):
    def __init__(self):
        self.fig = plt.figure()
        self.ax = fig.add_subplot(111, projection='3d')
    def plot(self, x, y, z, color):
        self.ax.plot_wireframe(x, y, z, color)
				
                        
And this:
Should become:
With the condition that
main.main()was called before.