class_docstr: Base Chinese Sample class to hold the necessary info and provide atomic operations
class_docstr_tok: ["Base","Chinese","Sample","class","to","hold","the","necessary","info","and","provide","atomic","operations"]
docstr: Swap items between first_index and second_index of field value.
  
  :param str field: field name
  :param int first_index:
  :param int second_index:
  :return: Modified Sample
docstr_tok: ["Swap","items","between","first_index","and","second_index","of","field","value",".",":","param","str","field",":","field","name",":","param","int","first_index",":",":","param","int","second_index",":",":","return",":","Modified","Sample"]
code: def swap_field_at_index(self, field, first_index, second_index):
      r"""
      Swap items between first_index and second_index of field value.
  
      :param str field: field name
      :param int first_index:
      :param int second_index:
      :return: Modified Sample
  
      """
      sample = self.clone(self)
  
      field_obj = getattr(sample, field)
      assert isinstance(field_obj, (CnTextField, ListField))
      rep_obj = field_obj.swap_at_index(first_index, second_index)
      setattr(sample, field, rep_obj)
  
      return sample
  
imports: import copy
  from abc import ABC, abstractmethod
  from textflint.input.component.field.list_field import ListField
  from ..field import CnTextField
  from ....common.settings import MODIFIED_MASK
  from ....common.preprocess.cn_processor import CnProcessor
label_desc: Use image node_id 23 for calling the CnSample obj's underlying member method code with example usage: obj.swap_field_at_index(field, first_index, second_index) and returns: sample