def get_for_update(self, key):
        """
        Locks the key and then gets and returns the value to which the specified key is mapped. Lock will be released at
        the end of the transaction (either commit or rollback).

        :param key: (object), the specified key.
        :return: (object), the value for the specified key.

        .. seealso::
            :func:`Map.get(key) <hazelcast.proxy.map.Map.get>`
        """
        check_not_none(key, "key can't be none")
        return self._encode_invoke(transactional_map_get_for_update_codec, key=self._to_data(key))