成员的Python版本的C ++指针?

问题描述

考虑以下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中执行相同的操作,可以将getattrsetattr函数与成员名称一起使用,而不是成员指针:

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)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...