-1

Consider this C++ code:

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)++;
}

We have a function that accepts multiple objects and we want to perform an operation on a member we define using the memberPointer. How would we do this in python? I assume we can use some sort of reflection or is there a better way?

Marko Borković
  • 1,884
  • 1
  • 7
  • 22

1 Answers1

2

To do the same in Python, you could use the getattr and setattr functions with member name instead of a member pointer:

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)
zvone
  • 18,045
  • 3
  • 49
  • 77