访问限制
Python 类属性封装与访问控制教程
1. 封装的概念
封装是面向对象编程的三大特性之一(封装、继承、多态),它指的是将数据和操作数据的方法绑定在一起,并对外部隐藏内部实现的细节。
在Python中,封装主要通过命名约定来实现对类成员的访问控制。
2. 访问控制级别
2.1 公共成员 (Public)
默认情况下,Python类的所有属性和方法都是公共的,可以在类外部直接访问:
2.2 受保护成员 (Protected)
以一个下划线 _ 开头的成员被认为是受保护的,按照约定不应该在类外部直接访问,但Python并不强制限制:
2.3 私有成员 (Private)
以双下划线 __ 开头的成员被认为是私有的,Python会进行名称改写(name mangling)来限制直接访问:
3. 实现真正的封装
3.1 使用属性访问器
为了实现对私有属性的安全访问,通常使用getter和setter方法:
3.2 使用@property装饰器 (推荐)
Python提供了更优雅的属性访问方式:
使用方式:
4. 名称改写机制
Python对私有成员使用名称改写(name mangling)机制,将 __var 改为 _ClassName__var:
5. 特殊变量名
以双下划线开头和结尾的变量(如 __init__)是Python的特殊方法/属性,不会被名称改写:
6. 实践练习
按照要求修改Student类,封装gender属性:
7. 最佳实践
- 除非有特殊需要,属性应该设为私有(
__开头) - 使用@property装饰器实现属性访问控制
- 在setter方法中添加参数验证逻辑
- 避免直接访问
_ClassName__var这样的改写后名称 - 单下划线
_var表示受保护成员,仅作为约定
通过良好的封装实践,可以构建更健壮、更安全的面向对象程序。

