Привязка Python для перегрузки операторов C++

У меня есть класс, похожий на следующий:

class A {
    vector<double> v;
    double& x(int i) { return v[2*i]; }
    double& y(int i) { return v[2*i+1]; }
    double x(int i) const { return v[2*i]; }
    double y(int i) const { return v[2*i+1]; }
}

Я хочу, чтобы следующий код Python работал:

a = A()
a.x[0] = 4
print a.x[0]

Я думал о __setattr__и __getattr__, но не уверен, что это работает. Альтернативой является реализация следующего Python:

a = A()
a['x', 0] = 4
print a['x', 0]

не так хорошо, как предыдущий, но может быть проще реализовать (с __slice__? ).

PS. Я использую sip для привязки.

Спасибо.

6
задан interjay 12 July 2012 в 15:49
поделиться