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.
Add support for defining Python properties (attributes with getters and optional setters) in Rust.
Properties are defined inside
py_class!
with:where
property_name
is the name in Python, andPropertyType
is any type that implsToPyObject
.Property setters can optionally be defined as:
If the value is
None
then the caller is deleting the property (del obj.property_name
).If the value is
Some(x)
then the caller is setting the property tox
.For setters, the
PropertyType
can be any type that implsFromPyObject
, or a reference or optional reference to any type that implsRefFromPyObject
.In the latter case, the type of
value
isOption<Option<&PropertyType>>
, whereNone
means the value is being deleted,Some(None)
means the property is being set to PythonNone
, andSome(Some(x))
means the property is being set tox
.