09-16-周二_09-47-26

This commit is contained in:
2025-09-16 09:47:26 +08:00
parent 4d74d5ea44
commit 36ca88991e

View File

@@ -2,7 +2,13 @@
## 反射
python面向对象中的反射通过字符串的形式操作对象相关的属性。python中的一切事物都是对象都可以使用反射
- python面向对象中的反射
- 指程序在**运行时**动态地获取对象(包括类、模块、实例等)的结构信息(如属性、方法、类型),并能动态地操作这些结构(如调用方法、修改属性、创建对象)的能力。简单来说,反射让程序能在运行时“自省”——了解自身的组成,并根据需要灵活调整行为。
- 反射的常见应用场景
- **动态配置加载**根据配置文件如JSON、YAML动态设置对象属性。例如通过`setattr`将配置中的`debug=True`映射到对象的`debug`属性。
- **插件化架构**:通过`importlib.import_module`动态加载插件模块,再用`getattr`获取插件类的实例并调用其方法。例如,电商系统可动态加载“限时抢购”“团购”等插件订单类。
- **通用工具函数**:编写适用于不同对象的通用工具。例如,`print_object_info`函数通过`dir`获取对象所有属性,再用`getattr`打印属性值。
- **ORM框架**通过反射将数据库表的列映射到Python类的属性。例如Django ORM通过反射获取模型的字段信息动态生成SQL语句。
四个可以实现自省的函数