我正在研究一个Python项目,因为可以通过指定class.variablename直接访问实例变量名,所以我想知道是否建议实现相同的getter函数。我没有将变量声明为私有。
答案 0 :(得分:10)
在像Java这样的语言中,你实现了getter和setter,这样你就不需要更改类的接口,如果你想在获取或者添加时添加额外的处理(例如值验证,访问控制或日志记录)设置属性。如果你的课程将由你没有写的应用程序使用,这一点尤为重要。
在Python中,您可以使用@property
向属性添加代码而无需更改界面,因此您应该这样做。使用常规属性访问启动,如果需要添加行为,请稍后添加@property
。
即使这样,也要保持你的getter和setter函数的简单。预计属性访问速度相当快,您应该避免违反该期望。如果您需要做大量的工作来获取值,那么方法是合适的,但请为其指定一个描述性名称:calculateFoo()
而不是getFoo()
。