阿里云大学人工智能学前小测验-Python测试
10.Python权限修饰正确的是
A. 标识符开头无下划线,该变量或方法为公有权限
B. 标识符开头双下划线,该变量或方法为私有权限
C. 标识符开头单下划线,该变量或方法为保护权限
D. 以上都正确
参考博文:https://www.cnblogs.com/yanyichao/p/4319348.html,感谢博主
关于python中访问权限建议看一下这篇博文http://www.liujiangblog.com/course/python/45,毕竟以双下划线开头的数据成员是不是一定就无法从外部访问呢?其实也不是!本质上,从内部机制原理讲,外部不能直接访问__age是因为Python解释器对外把__age变量改成了_People__age,也就是_类名__age(类名前是一个下划线)。因此,投机取巧的话,你可以通过_ People__age在类的外部访问__age变量。即Python的私有成员和访问限制机制是“假”的,没有从语法层面彻底限制对私有成员的访问。
1 访问权限
Python中变量(函数)的访问权限与变量(函数)的名字有关
public object
protected _object import * 不会导入
private __object
system_use __object__
其中,单下划线开头,则不能通过import * 导入;双下划线开头(且少于两个下划线结尾),则无法直接访问,但是可以通过_classname__object访问。
class A:
__age = 18
print(dir(A()))
print(A()._A__age)
2 名字修饰
名字修饰是现代计算机程序设计语言的编译器用于解决由于程序实体的名字必须唯一而导致的问题的一种技术。
Python语言的名字修饰用于类的“私有”(private)成员。这种类成员的名字由前导双下划线开头,并且后缀下划线不能多于一个。例如__thing将被名字修饰,___thing和__thing_同样也会被名字修饰,但是__thing__和__thing___就不会被名字修饰。Python运行时库不限制访问这些成员,名字修饰只是用来避免拥有同名成员的派生类发生名字冲突。