在Python中避免实现getter函数是不好的做法?

时间:2017-03-06 22:02:41

标签: python

我正在研究一个Python项目,因为可以通过指定class.variablename直接访问实例变量名,所以我想知道是否建议实现相同的getter函数。我没有将变量声明为私有。

1 个答案:

答案 0 :(得分:10)

在像Java这样的语言中,你实现了getter和setter,这样你就不需要更改类的接口,如果你想在获取或者添加时添加额外的处理(例如值验证,访问控制或日志记录)设置属性。如果你的课程将由你没有写的应用程序使用,这一点尤为重要。

在Python中,您可以使用@property向属性添加代码而无需更改界面,因此您应该这样做。使用常规属性访问启动,如果需要添加行为,请稍后添加@property

即使这样,也要保持你的getter和setter函数的简单。预计属性访问速度相当快,您应该避免违反该期望。如果您需要做大量的工作来获取值,那么方法是合适的,但请为其指定一个描述性名称:calculateFoo()而不是getFoo()