Можно добавить свойство к классу с помощью метода считывания и метода set (в упрощенном случае):
class<X>("X")
.add_property("foo", &X::get_foo, &X::set_foo);
Таким образом можно использовать его из Python как это:
>>> x = mymodule.X()
>>> x.foo = 'aaa'
>>> x.foo
'aaa'
Но как добавить свойство к самому модулю (не класс)?
Существует
scope().attr("globalAttr") = ??? something ???
и
def("globalAttr", ??? something ???);
Я могу добавить глобальные функции и объекты моего класса с помощью вышеупомянутых двух путей, но, может казаться, не добавляю свойства тот же путь как в классах.
__ getattr __
и __ setattr __
не вызываются в модулях, поэтому вы не можете этого сделать в обычном Python без хаков (вроде сохранения класса в словаре модуля). Учитывая это, маловероятно, что в Boost Python есть элегантный способ сделать это.