Python 成员的 c++ 指针版本?
Python version of c++ pointer to member?
考虑这个 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)
考虑这个 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)