This fails silently. For example ```lock_axis(None)``` is allowed (I'm not sure it should be) but will not effect the value of ```self.axis```. One might imagine it would reset the axis. Furthermore, ```lock_axis(0)``` may or may not have succeeded and I don't know unless I inspect both ```self.axis``` and ```self.lock_axis```. Finally, I can lock the axis, but then change the ``self.axis``` public attribute so it's not really locked.