| 魔术方法 | 作用 | 
|---|---|
| _init_ | 对象的初始化方法 | 
| _class_ | 返回对象所属的类 | 
| _module_ | 返回类所在的模块 | 
| _mro_ | 返回类的调用顺序,可以找到其父类(用于找父类) | 
| _base_ | 获取类的直接父类(用于找父类) | 
| _bases_ | 获取父类的元组,按它们出现的先后排序(用于找父类) | 
| _dict_ | 返回当前类的函数、属性、全局变量等 | 
| _subclasses_ | 返回所有仍处于活动状态的引用的列表,列表按定义顺序排列(用于找子类) | 
| _globals_ | 获取函数所属空间下可使用的模块、方法及变量(用于访问全局变量) | 
| _import_ | 用于导入模块,经常用于导入os模块 | 
| _builtins_ | 返回Python中的内置函数,如eval | 

拿BUGKU的题目来测试一下:
 
1. class
".__class__
转换URL编码后:{{%27%27.class}}
 
- ”:引号表示字符串的意思
- 加上__class__,就是查看它的类
2. base
.__base__

 就是查看它的上级类也就是父类
3. subclasses
由于object已经是最上面的父类了,所以我们查看它的子类
.__subclasses __() 
看到有很多我们寻找我们能执行命令的类比如:os._wrap_close,然后它是在返回结果的第118位,所以我们在.__subclasses __()加上[117] //列表从0开始计算个数
 
4. globals
.__globals__
获取函数所属空间下可使用的模块、方法及变量(用于访问全局变量)
 
 …