继承关系和魔术方法

image-20250324172647170

继承关系

父类和子类

子类调用父类下的其他子类

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()

#输出c当前所属的类C
print(c.__class__)
<class'__main__.C'>

#输出类C的父类B
print(c.__class__.__base__)
<class'__main__.B'>

# 输出类C的父类的父类的父类
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__

作用:以字典的形式返回当前对象的全部全局变量

常用注入模块

image-20250325120149739