<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def revoke(self, *capabilities_to_revoke):
 """Revokes zero or more capabilities from this role. :param capabilities_to_revoke: Zero or more capabilities to grant this role. For a list of capabilities, see `Capabilities <http://dev.splunk.com/view/SP-CAAAEJ6#capabilities>`_ on Splunk Developer Portal. :type capabilities_to_revoke: ``string`` or ``list`` :return: The :class:`Role`. **Example**:: role = service.roles['somerole'] role.revoke('change_own_password', 'search') """

        possible_capabilities = self.service.capabilities
        for capability in capabilities_to_revoke:
            if capability not in possible_capabilities:
                raise NoSuchCapability(capability)
        old_capabilities = self['capabilities']
        new_capabilities = []
        for c in old_capabilities:
            if c not in capabilities_to_revoke:
                new_capabilities.append(c)
        if new_capabilities == []:
            new_capabilities = '' # Empty lists don't get passed in the body, so we have to force an empty argument.
        self.post(capabilities=new_capabilities)
        return self