在Python中,实例的变量名如果以__
开头,就变成了一个私有变量,只有内部可以访问,外部不能访问。
正常情况下访问类中的变量
#!/usr/bin/env python # -*- coding: utf-8 -*- class Student(): def __init__(self, name, score): self.name = name self.score = score #创建一个实例 person=Student('jack',100) #外部访问类的属性 print (person.name)
结果:(正常访问)
jack
将实例的变量名以__开头,从外部访问
#!/usr/bin/env python # -*- coding: utf-8 -*- class Student(): def __init__(self, name, score): self.__name = name self.__score = score #创建一个实例 person=Student('jack',100) #外部访问类的属性 print (person.__name)
结果:(访问失败)
Traceback (most recent call last): File "/Users/thorne/PycharmProjects/test_1/test_9.py", line 12, in <module> print (person.__name) AttributeError: Student instance has no attribute '__name'
为什么要这么做?
因为这样可以确保外部代码不能随意修改对象内部的状态。