学习SSTI继承关系和魔术方法
FLYFISH
继承关系
父类和子类
子类调用父类下的其他子类
flask脚本没有办法直接执行python指令
object是父子关系的顶端,所有数据类型最终的父类都是objexct
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| class A:pass class B(A):pass class C(B):pass class D(B):pass c=C()
print(c.__class__) <class'__main__.C'>
print(c.__class__.__base__) <class'__main__.B'>
print(c.__class__.__base__.__base__.__base__)
print(c.__class__.__mro__) (<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>)
print(c.__class__.__mro__[1].__subclasses__()) print(c.__class__.__base__.__subclasses__()) [<class '__main__.C'>, <class '__main__.D'>]
print(c.__class__.__base__.__subclasses__()[1]) <class '__main__.D'>
|
魔术方法
__class__
作用:查找当前类型的所属对象
__base__
作用:沿着父子类关系往上查找一个
__mro__
作用:查找当前类对象的所有继承类
__sbclasses__()
作用:查找父类下的所有子类
__init__
作用:查看类是否重载(重载指程序在运行时就已经加载好这个模块到内存中,如果出现wrapper字眼,说明没有重载)
__globals__
作用:以字典的形式返回当前对象的全部全局变量
常用注入模块
