Skip to content

Commit 04873e4

Browse files
committed
Added nullptr as input for writeonly property
1 parent 153558f commit 04873e4

File tree

3 files changed

+8
-4
lines changed

3 files changed

+8
-4
lines changed

docs/classes.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,9 @@ the setter and getter functions:
155155
.def_property("name", &Pet::getName, &Pet::setName)
156156
// ... remainder ...
157157
158+
Write only properties can be defined by passing ``nullptr`` as the
159+
input for the read function.
160+
158161
.. seealso::
159162

160163
Similar functions :func:`class_::def_readwrite_static`,

include/pybind11/pybind11.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
5151
class cpp_function : public function {
5252
public:
5353
cpp_function() { }
54+
cpp_function(std::nullptr_t) { }
5455

5556
/// Construct a cpp_function from a vanilla function pointer
5657
template <typename Return, typename... Args, typename... Extra>

tests/test_methods_and_attributes.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -279,18 +279,18 @@ TEST_SUBMODULE(methods_and_attributes, m) {
279279
.def(py::init<>())
280280
.def_readonly("def_readonly", &TestProperties::value)
281281
.def_readwrite("def_readwrite", &TestProperties::value)
282-
.def_property("def_writeonly", py::cpp_function(),
282+
.def_property("def_writeonly", nullptr,
283283
[](TestProperties& s,int v) { s.value = v; } )
284-
.def_property("def_property_writeonly", py::cpp_function(), &TestProperties::set)
284+
.def_property("def_property_writeonly", nullptr, &TestProperties::set)
285285
.def_property_readonly("def_property_readonly", &TestProperties::get)
286286
.def_property("def_property", &TestProperties::get, &TestProperties::set)
287287
.def_readonly_static("def_readonly_static", &TestProperties::static_value)
288288
.def_readwrite_static("def_readwrite_static", &TestProperties::static_value)
289-
.def_property_static("def_writeonly_static", py::cpp_function(),
289+
.def_property_static("def_writeonly_static", nullptr,
290290
[](py::object, int v) { TestProperties::static_value = v; })
291291
.def_property_readonly_static("def_property_readonly_static",
292292
[](py::object) { return TestProperties::static_get(); })
293-
.def_property_static("def_property_writeonly_static", py::cpp_function(),
293+
.def_property_static("def_property_writeonly_static", nullptr,
294294
[](py::object, int v) { return TestProperties::static_set(v); })
295295
.def_property_static("def_property_static",
296296
[](py::object) { return TestProperties::static_get(); },

0 commit comments

Comments
 (0)