diff --git a/frappy/properties.py b/frappy/properties.py index a4736e0..910002d 100644 --- a/frappy/properties.py +++ b/frappy/properties.py @@ -143,6 +143,7 @@ class HasProperties(HasDescriptors): try: # try to apply bare value to Property po.value = po.datatype.validate(value) + setattr(cls, pn, po) # replace bare value by updated Property except BadValueError: if callable(value): raise ProgrammingError(f'method {cls.__name__}.{pn} collides with property of {base.__name__}') from None diff --git a/test/test_properties.py b/test/test_properties.py index 9bfc44d..6d62e67 100644 --- a/test/test_properties.py +++ b/test/test_properties.py @@ -148,6 +148,8 @@ def test_Property_override(): o2 = co() assert o1.a == 1 assert o2.a == 3 + o2.setProperty('a', 4) + assert o2.a == 4 with pytest.raises(ProgrammingError) as e: class cx(c): # pylint: disable=unused-variable