code: def crc(self):
          
          if self._modified_c or not hasattr(self, '_hashed_crc'):
              if self.flags['C_CONTIGUOUS']:
                  self._hashed_crc = crc32(self)
              else:
                  # the case where we have sliced our nice
                  # contiguous array into a non- contiguous block
                  # for example (note slice *after* track operation):
                  # t = util.tracked_array(np.random.random(10))[::-1]
                  contiguous = np.ascontiguousarray(self)
                  self._hashed_crc = crc32(contiguous)
          self._modified_c = False
          return self._hashed_crc
docs: A zlib.crc32 or zlib.adler32 checksum
          of the current data.
  
          Returns
          -----------
          crc: int, checksum from zlib.crc32 or zlib.adler32