【问题标题】:Python version of c++ pointer to member?指向成员的 C++ 指针的 Python 版本?
【发布时间】:2020-08-19 09:56:51
【问题描述】:

考虑一下这个 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 没有指针,但 everything 充当引用。这只是for obj in list_of_objects: obj.member_a += 1
  • 检查this

标签: python c++ pointer-to-member


【解决方案1】:

要在 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)

【讨论】:

    猜你喜欢
    • 2018-03-24
    • 2013-05-02
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    相关资源
    最近更新 更多