If I bind it in the following way:
wx.grid.EVT_GRID_CELL_CHANGE(self.mygrid, self.on_cell_change)
If I bind it in the following way:
wx.grid.EVT_GRID_CELL_CHANGE(self.mygrid, self.on_cell_change)
You shouldn't bind events like that, that is the old way of doing it.
Use self.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.on_cell_change). You can then also use self.Unbind(wx.grid.EVT_GRID_CELL_CHANGE) to solve your question
(if self is the grid in this example)
Interesting article: http://wiki.wxpython.org/self.Bind%20vs.%20self.button.Bind