在设计继承时,为什么“使用属性隐藏功能实现”?

时间:2015-09-27 05:52:10

标签: python oop

以下是paragraph in PEP8。我不明白“在这种情况下,使用属性隐藏简单数据属性访问语法背后的功能实现。”和注3:

  

对于简单的公共数据属性,最好只公开属性名称,而不使用复杂的访问器/ mutator方法。请记住,如果您发现简单的数据属性需要增加功能行为,那么Python为未来的增强提供了一条简单的途径。在这种情况下,使用属性隐藏简单数据属性访问语法背后的功能实现。

     

注1:属性仅适用于新式类。

     

注意2:尝试保持功能行为副作用免费,尽管缓存等副作用通常都很好。

     

注3:避免使用属性进行计算成本高昂的操作;属性表示法使调用者相信访问(相对)便宜。

1 个答案:

答案 0 :(得分:0)

隐藏实现的目的是保持API不变。

如果您设计了一个具有简单属性的类,之后您发现子类需要计算才能返回正确的值,您只需用计算属性替换simple属性,相关API保持不变。计算属性更好地称为属性。

注3是在设计类时要记住的建议,而不是在对其进行子类化时。