class_docstr: Abstract class for logical operators.
  
  A logical operator describes transformation, and later is converted into
  physical operator.
class_docstr_tok: ["Abstract","class","for","logical","operators",".","A","logical","operator","describes","transformation",",","and","later","is","converted","into","physical","operator","."]
docstr: Returns the estimated number of blocks that
  would be outputted by this logical operator.
  
  This method does not execute the plan, so it does not take into consideration
  block splitting. This method only considers high-level block constraints like
  `Dataset.repartition(num_blocks=X)`. A more accurate estimation can be given by
  `PhysicalOperator.num_outputs_total()` during execution.
docstr_tok: ["Returns","the","estimated","number","of","blocks","that","would","be","outputted","by","this","logical","operator",".","This","method","does","not","execute","the","plan",",","so","it","does","not","take","into","consideration","block","splitting",".","This","method","only","considers","high-level","block","constraints","like","`","Dataset.repartition","(","num_blocks=X",")","`",".","A","more","accurate","estimation","can","be","given","by","`","PhysicalOperator.num_outputs_total","(",")","`","during","execution","."]
code: def estimated_num_outputs(self) -> Optional[int]:
      """Returns the estimated number of blocks that
      would be outputted by this logical operator.
  
      This method does not execute the plan, so it does not take into consideration
      block splitting. This method only considers high-level block constraints like
      `Dataset.repartition(num_blocks=X)`. A more accurate estimation can be given by
      `PhysicalOperator.num_outputs_total()` during execution.
      """
      if self._num_outputs is not None:
          return self._num_outputs
      elif len(self._input_dependencies) == 1:
          return self._input_dependencies[0].estimated_num_outputs()
      return None
  
imports: from typing import List, Optional
  from .operator import Operator
label_desc: Use image node_id 2 for calling the LogicalOperator obj's underlying member method code with example usage: obj.estimated_num_outputs() and returns: None, self, self