pg.clone¶
Accessible via pg.clone
, pg.symbolic.clone
.
- clone(x, deep=False, memo=None, override=None)[source]¶
Clones a value. Use symbolic clone if possible.
Example:
@pg.members([ ('x', pg.typing.Int()), ('y', pg.typing.Any()) ]) class A(pg.Object): pass # B is not a symbolic object. class B: pass # Shallow copy on non-symbolic values (by reference). a = A(1, B()) b = pg.clone(a) assert pg.eq(a, b) assert a.y is b.y # Deepcopy on non-symbolic values. c = pg.clone(a, deep=True) assert pg.ne(a, c) assert a.y is not c.y # Copy with override d = pg.clone(a, override={'x': 2}) assert d.x == 2 assert d.y is a.y
- Return type:
- Parameters:
x – value to clone.
deep – If True, use deep clone, otherwise use shallow clone.
memo – Optional memo object for deep clone.
override – Value to override if value is symbolic.
- Returns:
Cloned instance.