<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _read_services(self):
 """ Read the control XML file and populate self.services with a list of services in the form of Service class instances. """

        # The double slash in the XPath is deliberate, as services can be
        # listed in two places (Section 2.3 of uPNP device architecture v1.1)
        for node in self._findall('device//serviceList/service'):
            findtext = partial(node.findtext, namespaces=self._root_xml.nsmap)
            svc = Service(
                self,
                self._url_base,
                findtext('serviceType'),
                findtext('serviceId'),
                findtext('controlURL'),
                findtext('SCPDURL'),
                findtext('eventSubURL')
            )
            self._log.debug(
                '%s: Service %r at %r', self.device_name, svc.service_type, svc.scpd_url)
            self.services.append(svc)
            self.service_map[svc.name] = svc