docstr: Assign a clipper that is inherited from a parent node.
  
  If *clipper* is None, then remove any clippers for *node*.
docstr_tok: ["Assign","a","clipper","that","is","inherited","from","a","parent","node",".","If","*","clipper","*","is","None",",","then","remove","any","clippers","for","*","node","*","."]
code: def _set_clipper(self, node, clipper):
      """Assign a clipper that is inherited from a parent node.
  
      If *clipper* is None, then remove any clippers for *node*.
      """
      if node in self._clippers:
          self.detach(self._clippers.pop(node))
      if clipper is not None:
          self.attach(clipper)
          self._clippers[node] = clipper
  
file_path: vispy/vispy/scene/visuals.py
imports: import re
  import weakref
  from ..None import visuals
  from .node import Node
  from ..visuals.filters import Alpha, PickingFilter
  from typing import TypeVar
label_desc: Use image node_id 3 for calling the VisualNode obj's underlying member method code with example usage: obj._set_clipper(node, clipper) without return types