【发布时间】:2023-03-18 00:56:01
【问题描述】:
C++ 的一大优点是使用const-reference 参数——使用这些类型的参数,您几乎可以保证对象不会被意外修改,也不会产生副作用。
问题是,与这些参数等效的 Python 是什么?
例如,假设你有这个 C++ 方法:
void Foo::setPosition(const QPoint &position) {
m_position = position;
}
你想像这样将它“翻译”成 Python:
def set_position(self, position):
self.position = position
这样做可能会产生很多麻烦,并且还会出现许多细微的错误。问题是,使用 const 引用参数(复制构造函数)的 C++ 方法的“Python 等效”方式是什么?
上次我发现一个错误是因为我有一个糟糕的“C++ -> Python 翻译”;我用类似的东西解决了这个问题:
my_python_instance.set_position(QPoint(pos))
...另外说,我的另一个选择是从调用者那里克隆对象...我很确定这不是正确的方法。
【问题讨论】:
标签: python c++ language-lawyer copy-constructor const-correctness