class_docstr: Base class for distribution.
  
  Parameters
  ----------
  event_dim : int, default None
      Variable indicating the dimension of the distribution's support.
  validate_args : bool, default None
      Whether to validate the distribution parameters
code: def __init__(self, event_dim=None, validate_args=None):
      self.event_dim = event_dim
      if validate_args is not None:
          self._validate_args = validate_args
      if self._validate_args:
          for param, constraint in self.arg_constraints.items():
              if param not in self.__dict__ and isinstance(
                  getattr(type(self), param), cached_property
              ):
                  # skip param that is decorated by cached_property
                  continue
              setattr(
                  self, param, constraint.check(getattr(self, param))
              )
      super(Distribution, self).__init__()
  
imports: from numbers import Number
  from .utils import cached_property
  from ....None import np
label_desc: Use image node_id 2 to create a new Distribution object from inherited base classes: object with example: obj = Distribution(event_dim, validate_args)