class_docstr: The Extra Tree leaves change the way in which the splitters are updated
  (by using subsets of features).
  
  Parameters
  ----------
  stats
      Initial class observations.
  depth
      The depth of the node.
  splitter
      The numeric attribute observer algorithm used to monitor target statistics
      and perform split attempts.
  max_features
      Number of attributes per subset for each node split.
  seed
      Seed to ensure reproducibility.
  kwargs
      Other parameters passed to the learning node.
code: def _sample_features(self, x, max_features):
      return self._rng.sample(sorted(x.keys()), max_features)
  
imports: from __future__ import annotations
  import random
  import typing
  from river.tree.nodes.htr_nodes import LeafAdaptive, LeafMean, LeafModel
  from river.tree.nodes.leaf import HTLeaf
label_desc: Use image node_id 3 for calling the ETLeaf obj's underlying member method code with example usage: obj._sample_features(x, max_features) and returns: self