首页 » 与孩子一起学编程 » 与孩子一起学编程全文在线阅读

《与孩子一起学编程》14.7 隐藏数据

关灯直达底部

你可能已经意识到,查看或修改对象中的数据(属性)有两种方法。可以直接访问,像这样:

myDog.cooked_level = 5

或者也可以使用修改属性的方法,例如:

myDog.cook(5)

如果热狗开始时是生的(cooked_level = 0),这两种做法的作用相同。它们都会把 cooked_level 设置为 5。那么为什么还要那么麻烦,专门建立一个方法来做这个工作呢?为什么不直接修改呢?

我可以想到至少两个原因。

 
  • 如果直接访问属性,烤热狗至少需要两部分:改变 cooked_level 和改变 cooked_string。而利用一个方法,可以只做一个方法调用,它就会完成我们需要的一切工作。

  • 如果直接访问属性,就会有这样的结果:

    cooked_level = cooked_level – 2

这会使热狗比以前还生。不过热狗肯定不会越烤越生!所以这是毫无意义的。通过使用方法,可以确保 cooked_level 只会增加而不会减少。

术语箱
按编程术语来讲,如果限制对对象数据的访问,使得只能通过使用方法来获取和修改这些数据,就称为数据隐藏(data hiding)。Python 没有提供任何途径来保证数据隐藏,不过如果你愿意,可以适当地编写代码来遵循这个规则。

目前为止,我们已经看到对象包含属性和方法。而且了解了如何创建对象以及如何利用一个名为 __init__ 的特殊方法初始化对象。我们还看到了另一个特殊方 法 __str__,利用这个方法可以更好地打印我们的对象。