避免指针的 Pythonic 方法

标签 python pointers coding-style

假设我们有一个对象a并且我们想要修改像这样的结构的数据

a.substruct1.subsubstruct1.name_of_the_data1

还有这个

a.substruct2.subsubstruct2.name_of_the_data2

要访问此结构,我们调用外部方法 get_the_data_shortcut(a),该方法经过大量参数化(例如参数 subsstruct 指定要返回哪个子结构)。这看起来非常多余,但所有这些参数都有一个非常好的默认设置,这是有意义的。此外,如果默认分支不可用,此函数将返回另一个数据分支。

如何修改get_the_data_shortcut(a)

b = get_the_data_shortcut(a)
b = b + 1

然后,get_the_data_shortcut(a) 保持不变,因为 Python 不是 Java。

我需要二传手吗?大多数情况下,这不是我的代码,而是由编写 Python 代码的人编写的,我正在努力跟上这些标准。

最佳答案

正如您发现的,更改 b 引用的对象不会修改 a 对象(或其子结构)。如果你想这样做,你将需要一个类似于 get_the_data_shortcut(a) 的方法。即一个

set_the_data_shortcut(a, newvalue)

或者,您可以使用一个方法来返回存储值的子结构并对其进行操作。

# returns a.substructure2.subsubstructure2 
#          or a.substructure1.subsubstructure1 based on the value of kind
substruct = get_the_substructure(a, kind)
substruct.name_of_data1 += 1

关于避免指针的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32274917/

相关文章:

python - 如何从 pandas 数据框中列的第二个值附加到字典

C 结构指针

C++对指针的引用

java - 需要有关编码最佳实践的建议

python - 如何在Python中读取文档的特定部分

python - 遍历两个数组并将每个数组的集合添加到新数组中而不重复

python - 使用字典替换pandas数据框中的字符串而不覆盖

函数内的 Char 指针分配 - 段错误

c# - 单元测试的编写标准

python - 什么是 Yahoo openid 发现端点