python基础教程-类的访问限制

2026-03-20 06:26:47

1、我们先复习一下昨天我们的学生成绩的调用方式:

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))bat = Student('hongbin', 100)bat.Print_score()print bat.name

python基础教程-类的访问限制

2、我们可以观察一下在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name、score属性:小编可是好不容易才“考了”100分 就这样被修改成了59,会不会很不爽!

python基础教程-类的访问限制

python基础教程-类的访问限制

3、在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,我们可以测试一下:

python基础教程-类的访问限制

python基础教程-类的访问限制

4、这样就确保了外部代码不能随意修改对象内部的状态,这样通过访问限制的保护,代码更加健壮。

虽然不能直接获取调用,但是我们可以通过其他办法调用他们 我们继续修改测试一下:(其实就是在类的内部再调用一次嘛,麻溜溜~)

python基础教程-类的访问限制

5、在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,所以,不能用__name__、__score__这样的变量名。有些时候,你会看到以一个下划线开头的实例变量名,比如_name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。

python基础教程-类的访问限制

6、总的来说就是,Python本身没有任何机制阻止你干坏事,一切全靠自觉。

最后注意下面的这种错误写法:(也当作是本经验的作业,大家感觉一下为什么是错误的ps 可以和前面的做对比哦)

python基础教程-类的访问限制

猜你喜欢