Constant variable and API

M

mg

Hi everybody...

I am using Python API in order to create bindings.
So, in the init function of my module, I create constants :

PyMODINIT_FUNC initMyModule( void )
{
PyObject* module = Py_InitModule3( "MyModule", 0, "this is my
module" ) ;
if( ! module ) return ;

PyObject* dict = PyModule_GetDict( module ) ;
if( ! dict ) return ;

long value = 0 ; // for the example
PyObject* py_value = PyInt_FromLong( value ) ;
char* name = "NULL" ;
PyDict_SetItemString( dict, name, py_value ) ;
Py_DECREF( py_value ) ;
}

So, my first "problem" is that my module variable is mutable; I can
write the following instruction in python :
99

Then, my question is : how can I implement a constant variable from the
API in order to the reaffectation (MyModule.NULL = 99) of my variable be
impossible ?

Thanks for your help.
Mathieu
 
A

Alex Martelli

mg said:
Then, my question is : how can I implement a constant variable from the
API in order to the reaffectation (MyModule.NULL = 99) of my variable be
impossible ?

With a module (a direct instance of types.ModuleType), you can't -- the
module type just doesn't have any functionality to control attribute
setting. You can subclass the type to do that, and install an instance
of the subclass in sys.modules in the appropriate place...


Alex
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,065
Latest member
OrderGreenAcreCBD

Latest Threads

Top