问题描述
考虑以下C ++代码:
class TestClass{
public:
int memberA = 0;
int memberB = 0;
};
void doSomethingToMember(int TestClass::* memberPointer,std::vector<TestClass> objects){
for(int i = 0; i < objects.size(); i++)
(objects[i].*memberPointer)++;
}
我们有一个接受多个对象的函数,我们想对使用memberPointer
定义的成员执行操作。我们将如何在python中做到这一点?我认为我们可以使用某种反射方式,还是有更好的方法?
解决方法
要在Python中执行相同的操作,可以将getattr
和setattr
函数与成员名称一起使用,而不是成员指针:
def do_something_to_member(member_name,objects):
for object in objects:
member_value = getattr(object,member_name)
setattr(object,member_name,member_value + 1)