访问限制
2025年09月21日
访问限制
在一个类的内部,方法可以直接操作属性,然而外部的代码也可以修改一个实例对象的属性。访问的方式是通过点号“.”来实现。
这就存在一定的安全隐患。如家里的电视机,用按钮、遥控器都可以对其内部的芯片发出指令,这属于一个类内部的操作,而如果我们打开电视机去直接操作芯片,这就相当于直接访问实例对象的内部属性,这实际上是不太安全的。因此,在有必要的时候要对对象的属性进行访问限制。
小P 想一想
我是一个“类”,是个藏宝箱,里面有很多宝贝和藏宝图(类内的属性)。
不想让别人知道,那该怎么办?
…………
加上一把锁,变成私有变量(两个下划线__)。
有一天,世事变迁,藏宝图需要修改。
我拿来一把钥匙(类内的方法),打开了藏宝图。
依据小P的想法,为了解决这个问题,我们引入私有变量(private)的概念,也就是说这个变量不能直接被外部访问,而需要通过调用对象内部的方法才能够对其进行访问。在Python中,一个私有变量是在属性的名称前加上两个下划线__,例如:
这样改完之后,可以通过print_info()函数来访问,但是无法直接通过点号“.”来访问对象的属性值了。
如果需要从外界访问对象的属性,需要通过建立一个桥梁来完成。前面说到,类内部的方法可以访问属性,我们可以为类设计相应的函数方法,来获取内部的属性值或者修改内部的属性值。
例如,我们设计一个名为get_name()的函数,通过return返回self.__name值来取得属性值,设计set_name()函数,通过外部参数name修改self.__name的值。
运行结果为: