在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'
为什么要这么做?
因为这样可以确保外部代码不能随意修改对象内部的状态。