code: def modify_contact(self, contact_id, attrs=None, members=None, tags=None):
          
          cn = {}
          if tags:
              tags = self._return_comma_list(tags)
              cn['tn'] = tags
          if members:
              cn['m'] = members
          if attrs:
              attrs = [{'n': k, '_content': v} for k, v in attrs.items()]
              cn['a'] = attrs
  
          cn['id'] = contact_id
          resp = self.request_single('ModifyContact', {'cn': cn})
  
          return zobjects.Contact.from_dict(resp)
docs: :param contact_id: zimbra id of the targetd contact
          :param attrs  : a dictionary of attributes to set ({key:value,...})
          :param members: list of dict representing contacts and
          operation (+|-|reset)
          :param tags:    comma-separated list of tag names
          :returns:       the modified zobjects.Contact