题目 Python中单下划线_foo与双下划线__foo与__foo__的成员,下列说法正确的是? A _foo 不能直接用于’from module import *’ B __foo解析器用_classname__foo来代替这个名字,以区别和其他类相同的命名 C __foo__代表python里特殊方法专用的标识 D __foo 可以直接用于’from module import *’ 答案:ABC
解析/知识点
python中主要存在四种命名方式: 1、object :公用方法 2、_object :半保护
- 被看作是“protect”,意思是只有类对象和子类对象自己能访问到这些变量,在模块或类外不可以使用,不能用’from module import *’导入。
- __object 是为了避免与子类的方法名称冲突, 对于该标识符描述的方法,父类的方法不能轻易地被子类的方法覆盖,他们的名字实际上是 _classname__methodname。
3、_ _ object :全私有,全保护
- 私有成员“private”,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据,不能用’from module import *’导入。
4、_ _ object_ _ :内建方法,用户不要这样定义