避免指针的Pythonic方法

避免指针的Pythonic方法,python,pointers,coding-style,Python,Pointers,Coding Style,假设我们有一个对象a,我们想要修改数据,它是这样的结构 a.子结构1.子结构1.数据的名称1 还有这个 a.子结构2.子结构2.数据的名称2 为了访问这个结构,我们调用一个外部方法获取\u数据\u快捷方式(a),它是高度参数化的(例如,参数子结构指定返回哪个子结构)。这看起来很冗余,但所有这些参数都有一个非常好的默认设置,这是有意义的。此外,如果默认分支不可用,此函数将返回另一个数据分支 如何修改获取数据\u快捷方式(a) 然后,get\u数据\u快捷方式(a)保持不变,因为Python不是Ja

假设我们有一个对象
a
,我们想要修改数据,它是这样的结构

a.子结构1.子结构1.数据的名称1

还有这个

a.子结构2.子结构2.数据的名称2

为了访问这个结构,我们调用一个外部方法
获取\u数据\u快捷方式(a)
,它是高度参数化的(例如,参数
子结构
指定返回哪个子结构)。这看起来很冗余,但所有这些参数都有一个非常好的默认设置,这是有意义的。此外,如果默认分支不可用,此函数将返回另一个数据分支

如何修改
获取数据\u快捷方式(a)

然后,
get\u数据\u快捷方式(a)
保持不变,因为Python不是Java


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

Python使用引用类型,就像java一样。 然而,当你

b = b + 1
您没有更新您拥有的对象。而是创建一个新对象并将其分配给变量
b


如果要更新数据结构中
b
的值,应按照您的建议为数据结构编写一个setter。

因为您发现更改b引用的对象不会修改a对象(或其子结构)。如果您想这样做,您将需要一种类似于获取数据快捷方式(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

Python通常的方式是执行类似
b=a.substructure1.substructure1;b、 数据1+=1的名称。但也许你应该写一封信,这样我们就有更具体的事情要讨论了。
# 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