diff --git a/param/parameterized.py b/param/parameterized.py index 17e4a6dd..2f88df94 100644 --- a/param/parameterized.py +++ b/param/parameterized.py @@ -2104,7 +2104,7 @@ def _instantiate_param(self_, param_obj, dict_=None, key=None, deepcopy=True): dict_[key] = new_object - if isinstance(new_object, Parameterized): + if isinstance(new_object, Parameterized) and deepcopy: global object_count object_count += 1 # Writes over name given to the original object; diff --git a/tests/testparameterizedobject.py b/tests/testparameterizedobject.py index ffc56fd8..f9b5ea76 100644 --- a/tests/testparameterizedobject.py +++ b/tests/testparameterizedobject.py @@ -833,6 +833,26 @@ def test_update_context_multi_parameter(self): assert t.inst == 'foo' assert t.notinst == 1 + def test_constant_readonly_parameterized(self): + class ParamClass(param.Parameterized): + x = param.Number() + + pc1 = ParamClass(name="FOO1") + pc2 = ParamClass(name="FOO2") + + class P(param.Parameterized): + ro = param.Parameter(pc1, constant=True) + const = param.Parameter(pc2, readonly=True) + ro_i = param.Parameter(pc1, constant=True, instantiate=True) + const_i = param.Parameter(pc2, readonly=True, instantiate=True) + + p = P() + + assert p.ro.name == 'FOO1' + assert p.const.name == 'FOO2' + assert p.ro_i.name.startswith('ParamClass0') + assert p.const_i.name == 'FOO2' + class some_fn(param.ParameterizedFunction): __test__ = False