boost.python/objectยถ

Legacy Wiki Page

This page was migrated from the old MoinMoin-based wiki. Information may be outdated or no longer applicable. For current documentation, see python.org.

The library provides a class called object, which encapsulates a valid Python object and provides a similar interface to Pythonโ€™s.

object operatorsยถ

The first challenge was to provide support for object manipulations using a Python-like syntax, mostly in the form of operator overloads:

Python

C++

y = x.foo

y = x.attr(โ€œfooโ€);

x.foo = 1

x.attr(โ€œfooโ€) = 1;

y = x[z]

y = x[z];

x[z] = 1

x[z] = 1;

y = x[3:-1]

y = x.slice(3,-1);

y = x[3:]

y = x.slice(3,_);

y = x[:-2]

y = x.slice(_,-2);

z = x(1, y)

z = x(1, y);

z = x.f(1, y)

z = x.attr(โ€œfโ€)(1, y);

not x

!x

x and y

x && y

object conversionsยถ

object has a templated constructor which can be used to convert any C++ object to Python using the same underlying mechanisms used for the arguments to call<>.

If an object instance is created without any arguments to the constructor then this instance holds the value None.

object from PyObject *ยถ

You cannot directly construct an object from a PyObject *, see /handle