empty object from C

Stefan Behnel stefan_ml at behnel.de
Fri Dec 7 14:04:04 EST 2012


Eric Frederich, 07.12.2012 16:42:
> From C, I'd like to call a Python function that takes an object and sets
> some attributes on it.
> Lets say this is the function...
> 
> def foo(msg):
>     msg.bar = 123
>     msg.spam = 'eggs'
> 
> How do I create an empty object in C?
> In Python I would do something like this...
> 
> class Msg(object):
>     pass
> 
> ... and then instantiate an instance, and call the function.
> 
> msg = Msg()
> foo(msg)
> 
> I know how to create an empty dictionary and I get get by with that, but
> I'd like to create an object.

Here's some Cython code that you can call from C (after linking it in and
creating a Python interpreter at runtime):

    cdef public set_attributes(msg, int bar, char* spam):
        msg.bar = bar
        msg.spam = spam.decode('utf8')   # or whatever you use

However, how you'd use it depends on your actual C code. Personally, I'd
drop C and write all Python interaction in Cython. Makes these things way
easier.

Here are some longer examples:

https://github.com/cython/cython/tree/master/Demos/embed

https://github.com/cython/cython/tree/master/Demos/callback

Stefan





More information about the Python-list mailing list