class brainpy.mixin.JointType(*args, **kwds)#

Joint type; JointType[X, Y] means both X and Y.

To define a union, use e.g. Union[int, str].

Details: - The arguments must be types and there must be at least one. - None as an argument is a special case and is replaced by type(None). - Unions of unions are flattened, e.g.:

JointType[JointType[int, str], float] == JointType[int, str, float]
  • Unions of a single argument vanish, e.g.:

    JointType[int] == int  # The constructor actually returns int
  • Redundant arguments are skipped, e.g.:

    JointType[int, str, int] == JointType[int, str]
  • When comparing unions, the argument order is ignored, e.g.:

    JointType[int, str] == JointType[str, int]
  • You cannot subclass or instantiate a union.

  • You can use Optional[X] as a shorthand for JointType[X, None].