Return a new object replacing specified fields with new values. This is especially useful for immutable objects, like named tuples or frozen dataclasses.
(obj, /, **changes)
| 274 | |
| 275 | |
| 276 | def replace(obj, /, **changes): |
| 277 | """Return a new object replacing specified fields with new values. |
| 278 | |
| 279 | This is especially useful for immutable objects, like named tuples or |
| 280 | frozen dataclasses. |
| 281 | """ |
| 282 | cls = obj.__class__ |
| 283 | func = getattr(cls, '__replace__', None) |
| 284 | if func is None: |
| 285 | raise TypeError(f"replace() does not support {cls.__name__} objects") |
| 286 | return func(obj, **changes) |
no test coverage detected