class_docstr: A column object, with only the methods and properties required by the
  interchange protocol defined.
  
  A column can contain one or more chunks. Each chunk can contain up to three
  buffers - a data buffer, a mask buffer (depending on null representation),
  and an offsets buffer (if variable-size binary; e.g., variable-length
  strings).
  
  TBD: Arrow has a separate "null" dtype, and has no separate mask concept.
       Instead, it seems to use "children" for both columns with a bit mask,
       and for nested dtypes. Unclear whether this is elegant or confusing.
       This design requires checking the null representation explicitly.
  
       The Arrow design requires checking:
       1. the ARROW_FLAG_NULLABLE (for sentinel values)
       2. if a column has two children, combined with one of those children
          having a null dtype.
  
       Making the mask concept explicit seems useful. One null dtype would
       not be enough to cover both bit and byte masks, so that would mean
       even more checking if we did it the Arrow way.
  
  TBD: there's also the "chunk" concept here, which is implicit in Arrow as
       multiple buffers per array (= column here). Semantically it may make
       sense to have both: chunks were meant for example for lazy evaluation
       of data which doesn't fit in memory, while multiple buffers per column
       could also come from doing a selection operation on a single
       contiguous buffer.
  
       Given these concepts, one would expect chunks to be all of the same
       size (say a 10,000 row dataframe could have 10 chunks of 1,000 rows),
       while multiple buffers could have data-dependent lengths. Not an issue
       in pandas if one column is backed by a single NumPy array, but in
       Arrow it seems possible.
       Are multiple chunks *and* multiple buffers per column necessary for
       the purposes of this interchange protocol, or must producers either
       reuse the chunk concept for this or copy the data?
  
  Note: this Column object can only be produced by ``__dataframe__``, so
        doesn't need its own version or ``__column__`` protocol.
class_docstr_tok: ["A","column","object",",","with","only","the","methods","and","properties","required","by","the","interchange","protocol","defined",".","A","column","can","contain","one","or","more","chunks",".","Each","chunk","can","contain","up","to","three","buffers","-","a","data","buffer",",","a","mask","buffer","(","depending","on","null","representation",")",",","and","an","offsets","buffer","(","if","variable-size","binary",";","e.g.",",","variable-length","strings",")",".","TBD",":","Arrow","has","a","separate","``","null","''","dtype",",","and","has","no","separate","mask","concept",".","Instead",",","it","seems","to","use","``","children","''","for","both","columns","with","a","bit","mask",",","and","for","nested","dtypes",".","Unclear","whether","this","is","elegant","or","confusing",".","This","design","requires","checking","the","null","representation","explicitly",".","The","Arrow","design","requires","checking",":","1.","the","ARROW_FLAG_NULLABLE","(","for","sentinel","values",")","2.","if","a","column","has","two","children",",","combined","with","one","of","those","children","having","a","null","dtype",".","Making","the","mask","concept","explicit","seems","useful",".","One","null","dtype","would","not","be","enough","to","cover","both","bit","and","byte","masks",",","so","that","would","mean","even","more","checking","if","we","did","it","the","Arrow","way",".","TBD",":","there","'s","also","the","``","chunk","''","concept","here",",","which","is","implicit","in","Arrow","as","multiple","buffers","per","array","(","=","column","here",")",".","Semantically","it","may","make","sense","to","have","both",":","chunks","were","meant","for","example","for","lazy","evaluation","of","data","which","does","n't","fit","in","memory",",","while","multiple","buffers","per","column","could","also","come","from","doing","a","selection","operation","on","a","single","contiguous","buffer",".","Given","these","concepts",",","one","would","expect","chunks","to","be","all","of","the","same","size","(","say","a","10,000","row","dataframe","could","have","10","chunks","of","1,000","rows",")",",","while","multiple","buffers","could","have","data-dependent","lengths",".","Not","an","issue","in","pandas","if","one","column","is","backed","by","a","single","NumPy","array",",","but","in","Arrow","it","seems","possible",".","Are","multiple","chunks","*","and","*","multiple","buffers","per","column","necessary","for","the","purposes","of","this","interchange","protocol",",","or","must","producers","either","reuse","the","chunk","concept","for","this","or","copy","the","data","?","Note",":","this","Column","object","can","only","be","produced","by","``","__dataframe__","``",",","so","does","n't","need","its","own","version","or","``","__column__","``","protocol","."]
docstr: Return the number of chunks the column consists of.
docstr_tok: ["Return","the","number","of","chunks","the","column","consists","of","."]
code: def num_chunks(self) -> int:
      """
      Return the number of chunks the column consists of.
      """
      pass
  
imports: from abc import ABC, abstractmethod
  import enum
  from typing import Any, Dict, Iterable, Optional, Sequence, Tuple, TypedDict
label_desc: Use image node_id 8 for calling the Column obj's underlying member method code with example usage: obj.num_chunks() without return types