Modify tp_getset or PyGetSetDef entries in run-time
Hi,
I have a type object implemented using plain Python 3 C API. The type has number of attributes - tp_getset slot set with typical table of geters and seters. I'd like to find out best way to make certain attributes read-only at run-time.
The table I assign to tp_getset looks like this:
PyGetSetDef Foo_getseters[] = { {"text", (getter)Foo_get_text, (setter)Foo_set_text, PyDoc_STR("Foo text"), NULL }, {NULL} };
Now, at some point at run-time, I'd like to disallow assignment to .text property Obvious way to do that is to check desired condition in Foo_set_text() and set AttributeError.
I wonder if it would be possible and sensible to modify the tp_getset slot and simply set the Foo_set_text entry in Foo_getseters to NULL.
Is it possible? Is there any better way to make an attribute read-only at run-time?
Best regards,
Mateusz Loskot, http://mateusz.loskot.net
participants (1)
-
Mateusz Loskot