class_docstr: A class for representing multivariate polynomial rings. 
code: def __init__(self, domain_or_ring, symbols=None, order=None):
      from sympy.polys.rings import PolyRing
  
      if (
          isinstance(domain_or_ring, PolyRing)
          and symbols is None
          and order is None
      ):
          ring = domain_or_ring
      else:
          ring = PolyRing(symbols, domain_or_ring, order)
  
      self.ring = ring
      self.dtype = ring.dtype
  
      self.gens = ring.gens
      self.ngens = ring.ngens
      self.symbols = ring.symbols
      self.domain = ring.domain
  
      if symbols:
          if (
              ring.domain.is_Field
              and ring.domain.is_Exact
              and len(symbols) == 1
          ):
              self.is_PID = True
  
      # TODO: remove this
      self.dom = self.domain
  
imports: from sympy.polys.domains.ring import Ring
  from sympy.polys.domains.compositedomain import CompositeDomain
  from sympy.polys.polyerrors import CoercionFailed, GeneratorsError
  from sympy.utilities import public
label_desc: Use image node_id 1 to create a new PolynomialRing object from inherited base classes: Ring, CompositeDomain with example: obj = PolynomialRing(domain_or_ring, symbols, order)