class_docstr: A PClass is a python class with a fixed set of specified fields. PClasses are declared as python classes inheriting
  from PClass. It is defined the same way that PRecords are and behaves like a PRecord in all aspects except that it
  is not a PMap and hence not a collection but rather a plain Python object.
  
  
  More documentation and examples of PClass usage is available at https://github.com/tobgu/pyrsistent
code: def __new__(cls, **kwargs):  # Support *args?
      result = super(PClass, cls).__new__(cls)
      factory_fields = kwargs.pop("_factory_fields", None)
      ignore_extra = kwargs.pop("ignore_extra", None)
      missing_fields = []
      invariant_errors = []
      for name, field in cls._pclass_fields.items():
          if name in kwargs:
              if factory_fields is None or name in factory_fields:
                  if is_field_ignore_extra_complaint(
                      PClass, field, ignore_extra
                  ):
                      value = field.factory(
                          kwargs[name], ignore_extra=ignore_extra
                      )
                  else:
                      value = field.factory(kwargs[name])
              else:
                  value = kwargs[name]
              _check_and_set_attr(
                  cls, field, name, value, result, invariant_errors
              )
              del kwargs[name]
          elif field.initial is not PFIELD_NO_INITIAL:
              initial = (
                  field.initial()
                  if callable(field.initial)
                  else field.initial
              )
              _check_and_set_attr(
                  cls, field, name, initial, result, invariant_errors
              )
          elif field.mandatory:
              missing_fields.append(
                  "{0}.{1}".format(cls.__name__, name)
              )
  
      if invariant_errors or missing_fields:
          raise InvariantException(
              tuple(invariant_errors),
              tuple(missing_fields),
              "Field invariant failed",
          )
  
      if kwargs:
          raise AttributeError(
              "'{0}' are not among the specified fields for {1}".format(
                  ", ".join(kwargs), cls.__name__
              )
          )
  
      check_global_invariants(result, cls._pclass_invariants)
  
      result._pclass_frozen = True
      return result
  
imports: from pyrsistent._checked_types import InvariantException, CheckedType, _restore_pickle, store_invariants
  from pyrsistent._field_common import set_fields, check_type, is_field_ignore_extra_complaint, PFIELD_NO_INITIAL, serialize, check_global_invariants
  from pyrsistent._transformations import transform
label_desc: Use image node_id 1 for calling the PClass obj's underlying member method code with example usage: obj.__new__(cls) and returns: result