<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def explode(self, contactgroups, notificationways):
 """Explode all contact for each contactsgroup :param contactgroups: contactgroups to explode :type contactgroups: alignak.objects.contactgroup.Contactgroups :param notificationways: notificationways to explode :type notificationways: alignak.objects.notificationway.Notificationways :return: None """

        # Contactgroups property need to be fulfill for got the information
        self.apply_partial_inheritance('contactgroups')
        # _special properties maybe came from a template, so
        # import them before grok ourselves
        for prop in Contact.special_properties:
            if prop == 'contact_name':
                continue
            self.apply_partial_inheritance(prop)

        # Register ourselves into the contactsgroups we are in
        for contact in self:
            if not (hasattr(contact, 'contact_name') and hasattr(contact, 'contactgroups')):
                continue
            for contactgroup in contact.contactgroups:
                contactgroups.add_member(contact.contact_name, contactgroup.strip())

        # Now create a notification way with the simple parameter of the
        # contacts
        for contact in self:
            need_notificationway = False
            params = {}
            for param in Contact.simple_way_parameters:
                if hasattr(contact, param):
                    need_notificationway = True
                    params[param] = getattr(contact, param)
                elif contact.properties[param].has_default:  # put a default text value
                    # Remove the value and put a default value
                    setattr(contact, param, contact.properties[param].default)

            if need_notificationway:
                cname = getattr(contact, 'contact_name', getattr(contact, 'alias', ''))
                nw_name = cname + '_inner_nw'
                notificationways.new_inner_member(nw_name, params)

                if not hasattr(contact, 'notificationways'):
                    contact.notificationways = [nw_name]
                else:
                    contact.notificationways = list(contact.notificationways)
                    contact.notificationways.append(nw_name)