|  | 
Niall Douglas provides these notes:
        If you define custom converters similar to the ones shown above the def_readonly()
        and def_readwrite()
        member functions provided by boost::python::class_
        for direct access to your member data will not work as expected. This is
        because def_readonly("bar",&foo::bar) is equivalent to:
      
.add_property("bar", make_getter(&foo::bar, return_internal_reference()))
        Similarly, def_readwrite("bar",&foo::bar)
        is equivalent to:
      
.add_property("bar", make_getter(&foo::bar, return_internal_reference()), make_setter(&foo::bar, return_internal_reference())
        In order to define return value policies compatible with the custom conversions
        replace def_readonly()
        and def_readwrite()
        by add_property().
        E.g.:
      
.add_property("bar", make_getter(&foo::bar, return_value_policy<return_by_value>()), make_setter(&foo::bar, return_value_policy<return_by_value>()))