Boost :: Python- possible de convertir automatiquement à partir de dict - & gt; std :: carte?

J'ai une classe C++, avec une fonction membre qui permet de prendre un petit-de-grand nombre de paramètres. Permet nom de ces paramètres, a-f. Tous les paramètres ont des valeurs par défaut. En tant que partie du projet de python je travail, je tiens à exposer cette classe pour python. Actuellement, la fonction de membre ressemble à quelque chose comme ceci:

class myClass {
    public:
    //Constructors - set a-f to default values.

    void SetParameters(std::map<std::string, double> &);
    private:
    double a, b, c, d, e, f;
}

void myClass::SetParameters(std::map<std::string, double> const& params) {
    //Code to iterate over the map, and set any found key/value pairs to their
    //corresponding variable.  i.e.- "a" --> 2.0, would set myClass::a to 2.0
}

Idéalement, en Python, je tiens à le faire à l'aide d'un dict:

>>> A = myModule.myClass();
>>> A.SetParameters({'a': 2.2, 'd': 4.3, b: '9.3'})

De cette façon, l'utilisateur peut entrer les valeurs dans n'importe quel ordre, et entrer n'importe quel nombre d'entre eux à être dépassé. Toute réflexion sur la façon dont cela peut être réalisé dans boost::python? Il me semble que je peux le faire via la modification de la carte d'entrée pour un boost::python objet, et à l'aide de l'extrait de fonctions. Cependant, cela m'obligerait à modifier l'interface de ma bibliothèque (je préfère le garder le std::carte d'interface, et avoir une certaine intermédiaire/auto technique de conversion de la version de python). Pensées?

source d'informationauteur MarkD