<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def find_item_by_id(self, object_id):
 """Get item based on its id or uuid :param object_id: :type object_id: int | str :return: :rtype: alignak.objects.item.Item | None """

        # Item id may be an item
        if isinstance(object_id, Item):
            return object_id

        # Item id should be a uuid string
        if not isinstance(object_id, string_types):
            logger.debug("Find an item by id, object_id is not int nor string: %s", object_id)
            return object_id

        for items in [self.hosts, self.services, self.actions, self.checks, self.hostgroups,
                      self.servicegroups, self.contacts, self.contactgroups]:
            if object_id in items:
                return items[object_id]

        # raise AttributeError("Item with id %s not found" % object_id)  # pragma: no cover,
        logger.error("Item with id %s not found", str(object_id))  # pragma: no cover,
        return None