成员变量可见性
双下划线
python 中没有关键字标识变量是否对外部可见,而是在变量或方法前面添加两个下划线,标识该变量或方法只能在内部访问或修改,外部不能访问或修改。
self.__score = score
一般这种情况,如果要访问这个 score 变量,我们有两种选择。
一种是在类的内部定义一个对外可见的方法,返回该变量。
另一种方法是通过 对象名._类名__score 才能访问该变量。
__xx__这是特殊变量,属于内置的属性。特殊变量可以从外部直接访问。
class Student():sum = 0def __init__(self, name, age):self.name = nameself.age = agedef marking(self, score):self.__score = scorestudent = Student("哎哟", 16)student.marking(59)print(student._Student__score)print(student.__dict__)
结果:
59{'name': '哎哟', 'age': 16, '_Student__score': 59}
__score 变量动态添加到对象时,默认地转换成了 _Student__score,这一点非常值得注意。
单下划线
大多数 python 程序员会遵循一种命名规范,让以下划线开头的变量表示是受保护的。
本类以外的代码在访问这样的属性时应该保持慎重。
这种做法并不是语法上的规则,单下划线开头的变量,外界依然能够访问,所以更多时候它只是一个提示作用。
