<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def write_value(self, value, offset=0):
 """ Attempts to write a value to the characteristic. Success or failure will be notified by calls to `write_value_succeeded` or `write_value_failed` respectively. :param value: array of bytes to be written :param offset: offset from where to start writing the bytes (defaults to 0) """

        bytes = [dbus.Byte(b) for b in value]

        try:
            self._object.WriteValue(
                bytes,
                {'offset': dbus.UInt16(offset, variant_level=1)},
                reply_handler=self._write_value_succeeded,
                error_handler=self._write_value_failed,
                dbus_interface='org.bluez.GattCharacteristic1')
        except dbus.exceptions.DBusException as e:
            self._write_value_failed(self, error=e)