[C++-sig] Re: registering simple conversions from/to python

Brett Calcott brett.calcott at paradise.net.nz
Wed May 28 11:52:37 CEST 2003


"David Abrahams" <dave at boost-consulting.com> wrote
>
> > I'd like to pythonise my classes a little by allowing tuples to be
> > passed to and from the data values.
> >
> > In python in would look something like this:
> >
> > class C(object):
> >     def __init__(self, x=0.0, y=0.0):
> >         self.x = x
> >         self.y = y
> >
> >     def get_xy(self):
> >         return self.x, self.y
> >
> >     def set_xy(self, xy):
> >         self.x, self.y = xy
> >
> >     xy = property(get_xy, set_xy)
> >
> >
> > I guess I would start by created a pair<x, x> object, and then
> > register inward and outward conversions for it.
> >
> > Is there a simple recipe for registering these conversions?
>
> Brett,
>
> I'm sorry, I can't tell what you're trying to do.  Could you please
> show an example of your C++ class and how you'd like to use it from
> Python?
>
Sorry, it was a little terse :)

The point is that in the python class above I can do this:

c = C()
c.x = 10.0
c.y = 5.0

But, with the property added, I can do this too:

c.xy = 10.0, 5.0

Which is kinda cool. I want to be able to do the same kind of thing from
C++. It is easy in boost_python to add a couple of data variables x and
y, but how to add the property wasn't obvious as I need to to be able to
unwrap and rewrap tuples/lists.

I think Ralf has supplied enough information to get me started.

Cheers,
Brett







More information about the Cplusplus-sig mailing list