Use class setter properties if present #4682
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Objective
Add support of class properties when setting attributes. This pull request is based on this discussion with @rusty1s .
Problem
If
Data
is subclassed all attributes are set with__setattr__
method. This prevents users from implementing validation logic for attributes (like ensuring a certaindtype
). In the example below, the developer would like to ensure thatmy_attr
can only holdint
values. This is currently not possible with the implemented__setattr__
method.Solution
The proposed solution checks if the class implements a setter method for the attribute or defaults to the standard behaviour
This implementation is tested with
test_data_subclass_setter
intest/data/test_data.py
. Coverage ofdata.py
is 89%Best,
Adriano