Python教程:理解类的访问限制与属性操作

0 下载量 57 浏览量 更新于2024-08-04 收藏 22KB DOCX 举报
"该资源是一个PYTHON学习教程,专注于访问限制操作的代码练习,旨在帮助学习者理解如何在Python类中实现私有属性和方法,以及如何通过getter和setter方法控制对外部的访问。" 在Python编程中,面向对象编程是一个核心概念,其中类是创建对象的蓝图。在这个特定的教程中,讨论的是类中的访问限制,这是保护数据完整性的一个关键机制。Python通过一种称为名称 mangling 的技术来实现这一特性,允许开发者创建“私有”属性,这些属性只能在类的内部访问。 首先,我们看到`Student`类的例子,其中`name`和`score`属性最初是没有访问限制的。外部代码可以直接读取或修改这些属性,这可能造成数据的意外改变,影响程序的稳定性和预期行为。为了解决这个问题,Python提供了一种方式来声明私有属性,即在变量名前加上两个下划线`__`。例如,`__name`和`__score`就是私有属性,它们对外部代码来说是不可见的。尝试直接访问这些私有属性会引发`AttributeError`。 然而,完全阻止外部访问这些属性可能会导致不便,特别是在需要获取或设置这些值的情况下。为了提供这种访问,Python引入了getter和setter方法。在`Student`类中,我们可以添加`get_name`和`get_score`方法来获取私有属性的值,同时,如果需要修改`score`,可以添加`set_score`方法。这样做既保持了内部状态的保护,又提供了可控的访问途径。 ```python class Student(object): def __init__(self, name, score): self.__name = name self.__score = score def print_score(self): print('%s: %s' % (self.__name, self.__score)) def get_name(self): return self.__name def get_score(self): return self.__score def set_score(self, new_score): if 0 <= new_score <= 100: self.__score = new_score else: raise ValueError("Score must be between 0 and 100") # 示例用法 bart = Student('BartSimpson', 59) print(bart.get_name()) # 输出 BartSimpson print(bart.get_score()) # 输出 59 bart.set_score(99) # 设置新的分数 ``` 在这个改进的`Student`类中,`get_name`和`get_score`提供了对私有属性的只读访问,而`set_score`允许外部代码修改`score`,但通过检查新值是否在合理范围内(0到100之间),增加了额外的安全层。这就是Python中访问控制的基本原理,通过这种机制,开发者可以更好地控制类的行为,确保代码的稳定性和安全性。这个代码练习文档将帮助学习者深入理解和实践这些概念。