将getter和setter用于不同的编程语言

leo*_*t88 5 c++ python getter setter matlab

所以我知道有很多关于getter和setter的问题,但我找不到与我的问题完全相同的东西.我想知道人们是否根据不同的语言改变了get/set的使用.我开始学习C++,并被教导使用getter和setter.这就是我的理解:

在C++(和Java?)中,变量可以是公共的也可以是私有的,但我们不能混合使用.例如,我不能拥有一个只能在类中更改的只读变量.它可以全部公开(可以读取和更改),也可以全部是私有的(无法读取,只能在课堂内更改).由于这个(以及可能的其他原因),我们使用getter和setter.

在MATLAB中,我可以控制变量的"setaccess"和"getaccess"属性,这样我就可以将事物设为只读(可以直接访问属性,但不能覆盖它).在这种情况下,我不觉得我需要一个getter因为我可以做class.property.

此外,在Python中,它被认为是"Pythonic",不使用getter/setter,只在需要时才将东西放入属性中.我真的不明白为什么在Python中使用所有公共变量都可以,因为这与我在使用C++时所学到的相反.

我只是好奇其他人的想法是什么.你会为所有语言使用getter和setter吗?您是否只将它用于C++/Java并在MATLAB和Python中直接访问(这是我目前正在做的)?第二种选择被认为是不好的吗?就我的目的而言,我只是指简单的getter和setter(只返回/设置值,不做任何其他事情).

谢谢!

sbi*_*sbi 6

实际上,getter和setter(以及隐藏它们的公共属性)对公共变量的改进很小,而且对于准类来说是一个非常好的指标.


Jon*_*nas 0

在 Matlab 中,每个额外的函数调用都会产生一些开销。因此,如果您不需要 setter/getter,因为某些语言功能允许您执行完全相同的操作,那么我真的不明白为什么您不想使用该语言功能。