This is dangerous, due to the documentation you've put on Widget.last_touch:

        To access the absolute last motion event created, use
        :attr:`~kivy.input.motionevent.MotionEvent.last_motion_event`.

The last motion created might just mean _nothing_. If you let the user (even you) using it during on_press/on_release, you'll get unexpected result depending the provider. For example, TUIO/HIDInput/LinuxWacom/MTDEV provider are threaded = means between the time you dispatch on_press, the last_motion_event might change.

Which will not be the case of Widget.last_touch itself.