Parenting to different objects over time?

After spending a few years using Blender off and on
I can usually work out how to do whatever it is.

But one thing I can’t recall coming across yet is (for example)…
Imagine a bottle being held in someones grasp, it would move
more or less with the hand. Which is fine, parent the bottle
to the hand or some vertices in the hand maybe.
But then if they handed that bottle to another hand it
would then have to be parented to the new hand in some way and
break the link with the first hand. How would that be done?
Can an object be parented to different things over time?

Or is there some constraint that locks something to whatever object if it is
close enough (a bit like the floor constraint) or something like that? (Still on Blender 2.49).

You can use multiple constraints and then keyframe their constraint influence.

Jolly good.
Thanks very much for that.