09-16-周二_09-47-26
This commit is contained in:
@@ -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语句。
|
||||||
|
|
||||||
四个可以实现自省的函数
|
四个可以实现自省的函数
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user