对象之隐藏数据,,


  隐藏数据

  你可能已经意识到,查看或修改对象中的数据(属性)有两种方法,可以直接访问,像这样: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没有提供任何途径来保证数据隐藏,不过如果你愿意,可以适当地编写代码来遵循这个规则。

  目前为止,我们已经看到对象包含属性和方法,而且了解了如何创建对象以及如何利用一个名为_str_(),利用这个方法可以更好地打印我们的对象。

评论关闭