class_docstr: A base class for Properties that have type parameters, e.g. ``List(String)``.
  
      
class_docstr_tok: ["A","base","class","for","Properties","that","have","type","parameters",",","e.g",".","``","List","(","String",")","``","."]
code: def replace(
      self, old: type[Property[Any]], new: Property[Any]
  ) -> Property[Any]:
      if self.__class__ == old:
          return new
      else:
          params = [
              type_param.replace(old, new)
              for type_param in self.type_params
          ]
          return self.__class__(*params)
  
imports: from __future__ import annotations
  import logging
  from copy import copy
  from typing import TYPE_CHECKING, Any, Callable, ClassVar, TypeVar, Union
  from ...util.dependencies import uses_pandas
  from ...util.strings import nice_join
  from ..has_props import HasProps
  from ._sphinx import property_link, register_type_link, type_link
  from .descriptor_factory import PropertyDescriptorFactory
  from .descriptors import PropertyDescriptor
  from .singletons import Intrinsic, IntrinsicType, Undefined, UndefinedType
label_desc: Use image node_id 9 for calling the ParameterizedProperty obj's underlying member method code with example usage: obj.replace(old, new) and returns: new, self