Вы можете использовать make_constructor
(не проверено):
TCurrency* TCurrency_from_Foo( const Foo& ) { return new TCurrency(); }
class_<TCurrency>( "TCurrency" )
.def( "__init__", boost::python::make_constructor( &TCurrency_from_Foo) )
;
Аргументом make_constructor является любой функтор, который возвращает указатель [1] на упакованный класс.
[1] На самом деле функция должна возвращать тип держателя указателя, поэтому, если ваш держатель указателя boost::shared_ptr
, функция должна возвращать boost :: shared_ptr вместо необработанного указателя.